{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d3eef351",
   "metadata": {},
   "source": [
    "# Lesson 3 - Creating a structural n bit Full Adder #"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6eba889",
   "metadata": {},
   "source": [
    "The idea here is to create a slightly more complex structural circuit.\n",
    "We will start by reusing the 1-bit full adder implemented in lesson 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4b12131a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dev machine\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "import platform\n",
    "if (platform.uname().node == 'TPY14'):\n",
    "    print('Dev machine')\n",
    "    sys.path.append('..\\\\..\\\\..\\\\py4hw')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "291e263b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import py4hw"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c5f49eba",
   "metadata": {},
   "outputs": [],
   "source": [
    "class FullAdder(py4hw.Logic):\n",
    "    \n",
    "    def __init__(self, parent, name, x, y, ci, s, co):\n",
    "        super().__init__(parent, name)\n",
    "        \n",
    "        self.x = self.addIn('x', x)\n",
    "        self.y = self.addIn('y', y)\n",
    "        self.ci = self.addIn('ci', ci)\n",
    "        self.s = self.addOut('s', s)\n",
    "        self.co = self.addOut('co', co)\n",
    "\n",
    "    def propagate(self):\n",
    "        self.s.put((self.x.get() ^ self.y.get()) ^ self.ci.get())\n",
    "        self.co.put((self.x.get() & self.y.get()) | ( (self.x.get() ^ self.y.get())  & self.ci.get()))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc317c62",
   "metadata": {},
   "source": [
    "### Creating a little more complex Structural Circuit ###\n",
    "When someone wants to create a repetivie structure in Verilog it can mix behavioural code with some specific statements to generate structures. \n",
    "This mix of design styles in the same description can cause some confusion on the language novices.\n",
    "In py4hw we try to be very clear on the design level you are using, to try to avoid confusion. \n",
    "\n",
    "Structural circuits have all their code in the constructor.\n",
    "\n",
    "A feature that can blow the mind of the typical Hardware designer is that signal (wire) widths are never specified in circuits. By default we assume that every circuit has parametric wire widths.\n",
    "\n",
    "If the designer wants to limit wire widths to an specific value, he/she can still do it by adding assertions or exceptions checking wire widths.\n",
    "\n",
    "An other aspect that can anoy the typical Hardware designer is the limitations to directly address bits from a wire.\n",
    "We need circuits to extract bits from wires and to concatenate bits into wires.\n",
    "The reason for this is that it greatly simplifies the simulation infrastructure, but at the same time, it forces the designer to carefully thing about which elements are driving the wires, avoiding errors."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "938dcd16",
   "metadata": {},
   "outputs": [],
   "source": [
    "class FullAdderN(py4hw.Logic):\n",
    "    \n",
    "    def __init__(self, parent, name, x, y, ci, s, co):\n",
    "        super().__init__(parent, name)\n",
    "        \n",
    "        self.addIn('x', x)\n",
    "        self.addIn('y', y)\n",
    "        self.addIn('ci', ci)\n",
    "        \n",
    "        self.addOut('s', s)\n",
    "        self.addOut('co', co)\n",
    "        \n",
    "        assert(ci.getWidth() == 1)\n",
    "        assert(co.getWidth() == 1)\n",
    "        assert(x.getWidth() == y.getWidth())\n",
    "        assert(x.getWidth() == s.getWidth())\n",
    "        \n",
    "        xb = self.wires('xb', x.getWidth(), 1)\n",
    "        yb = self.wires('yb', y.getWidth(), 1)\n",
    "        sb = self.wires('sb', s.getWidth(), 1)\n",
    "        \n",
    "        py4hw.BitsLSBF(self, 'xb', x, xb)\n",
    "        py4hw.BitsLSBF(self, 'yb', y, yb)\n",
    "        py4hw.ConcatenateLSBF(self, 'sb', sb, s)\n",
    "        \n",
    "        pci = ci # partial carry in\n",
    "        \n",
    "        for i in range(x.getWidth()):\n",
    "            pco = self.wire('co{}'.format(i))\n",
    "            FullAdder(self, 'FA{}'.format(i), xb[i], yb[i], pci, sb[i], pco)\n",
    "            pci = pco\n",
    "            \n",
    "        py4hw.Buf(self, 'co', pco, co)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "438da6f7",
   "metadata": {},
   "source": [
    "### Visualizaing the circuit ## \n",
    "\n",
    "With the visualization we can easily see that carrys are daisy-chained, as we would expect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4d502f11",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1530x638 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sys = py4hw.HWSystem()\n",
    "\n",
    "x = sys.wire('x', 4)\n",
    "y = sys.wire('y', 4)\n",
    "ci = sys.wire('ci')\n",
    "s = sys.wire('s', 4)\n",
    "co = sys.wire('co')\n",
    "fan = FullAdderN(sys, 'fa', x, y, ci, s, co)\n",
    "\n",
    "sch = py4hw.Schematic(fan)\n",
    "sch.draw()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0789848",
   "metadata": {},
   "source": [
    "### Simulating the System ###\n",
    "\n",
    "To verify the correct behaviour of the system we can simulate it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "12b1b641",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>var WaveSkin=WaveSkin||{};WaveSkin.default=[\"svg\",{\"id\":\"svg\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"height\":\"0\"},[\"style\",{\"type\":\"text/css\"},\"text{font-size:11pt;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;fill-opacity:1;font-family:Helvetica}.muted{fill:#aaa}.warning{fill:#f6b900}.error{fill:#f60000}.info{fill:#0041c4}.success{fill:#00ab00}.h1{font-size:33pt;font-weight:bold}.h2{font-size:27pt;font-weight:bold}.h3{font-size:20pt;font-weight:bold}.h4{font-size:14pt;font-weight:bold}.h5{font-size:11pt;font-weight:bold}.h6{font-size:8pt;font-weight:bold}.s1{fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s2{fill:none;stroke:#000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s3{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s4{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s5{fill:#fff;stroke:none}.s6{color:#000;fill:#ffffb4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s7{color:#000;fill:#ffe0b9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s8{color:#000;fill:#b9e0ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s9{fill:#000;fill-opacity:1;stroke:none}.s10{color:#000;fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s11{fill:#0041c4;fill-opacity:1;stroke:none}.s12{fill:none;stroke:#0041c4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}\"],[\"defs\",[\"g\",{\"id\":\"socket\"},[\"rect\",{\"y\":\"15\",\"x\":\"6\",\"height\":\"20\",\"width\":\"20\"}]],[\"g\",{\"id\":\"pclk\"},[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"nclk\"},[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"000\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m0\"},[\"path\",{\"d\":\"m0,20 3,0 3,-10 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0md\"},[\"path\",{\"d\":\"m8,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m0,20 5,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"111\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m1\"},[\"path\",{\"d\":\"M0,0 3,0 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"1md\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mu\"},[\"path\",{\"d\":\"M0,0 5,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M8,0 18,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"1mz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xxx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm0\"},[\"path\",{\"d\":\"M0,0 4,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 8,17\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm1\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 4,20 9,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 5,15\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmd\"},[\"path\",{\"d\":\"m0,0 4,0 c 3,10 6,20 16,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5.5,4.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 8,12\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m5,20 5,-5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m10,20 2.5,-2.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 10,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 6,14\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmz\"},[\"path\",{\"d\":\"m0,0 4,0 c 6,10 11,10 16,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4.5,0.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 6.5,3.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 8.5,6.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 11.5,8.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"ddd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dm0\"},[\"path\",{\"d\":\"m0,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,20 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dm1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dmu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"uuu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"um0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"um1\"},[\"path\",{\"d\":\"M0,0 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,0 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"umd\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"umz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s4\"}]],[\"g\",{\"id\":\"zzz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm0\"},[\"path\",{\"d\":\"m0,10 6,0 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm1\"},[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmx\"},[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"zmd\"},[\"path\",{\"d\":\"m0,10 7,0 c 3,5 8,10 13,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmu\"},[\"path\",{\"d\":\"m0,10 7,0 C 10,5 15,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"gap\"},[\"path\",{\"d\":\"m7,-2 -4,0 c -5,0 -5,24 -10,24 l 4,0 C 2,22 2,-2 7,-2 z\",\"class\":\"s5\"}],[\"path\",{\"d\":\"M-7,22 C -2,22 -2,-2 3,-2\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M-3,22 C 2,22 2,-2 7,-2\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-3\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-3\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-3\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-3\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-3\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-3\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-3\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-4\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-4\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-5\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-5\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-4\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-4\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-4\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-4\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-4\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-5\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-5\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-5\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-5\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-5\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Pclk\"},[\"path\",{\"d\":\"M-3,12 0,3 3,12 C 1,11 -1,11 -3,12 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Nclk\"},[\"path\",{\"d\":\"M-3,8 0,17 3,8 C 1,9 -1,9 -3,8 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-2\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-2\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-2\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-2\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-2\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-2\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-2\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"arrow0\"},[\"path\",{\"d\":\"m-12,-3 9,3 -9,3 c 1,-2 1,-4 0,-6 z\",\"class\":\"s11\"}],[\"path\",{\"d\":\"M0,0 -15,0\",\"class\":\"s12\"}]],[\"marker\",{\"id\":\"arrowhead\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"0 -4 11 8\",\"refX\":\"15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 11 0 0 4z\"}]],[\"marker\",{\"id\":\"arrowtail\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"-11 -4 11 8\",\"refX\":\"-15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 -11 0 0 4z\"}]]],[\"g\",{\"id\":\"waves\"},[\"g\",{\"id\":\"lanes\"}],[\"g\",{\"id\":\"groups\"}]]];\n",
       "</script><script>/*! wavedrom 2016-07-28 */\n",
       "!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error(\"Cannot find module '\"+g+\"'\");throw j.code=\"MODULE_NOT_FOUND\",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";function d(a,b){function c(a){var b=parseInt(e.style.left,10),d=parseInt(e.style.top,10);(a.x<b||a.x>b+e.offsetWidth||a.y<d||a.y>d+e.offsetHeight)&&(e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1))}var d,e;d=document.getElementById(b+a),d.childNodes[0].addEventListener(\"contextmenu\",function(f){var g,h,i;e=document.createElement(\"div\"),e.className=\"wavedromMenu\",e.style.top=f.y+\"px\",e.style.left=f.x+\"px\",g=document.createElement(\"ul\"),h=document.createElement(\"li\"),h.innerHTML=\"Save as PNG\",g.appendChild(h),i=document.createElement(\"li\"),i.innerHTML=\"Save as SVG\",g.appendChild(i),e.appendChild(g),document.body.appendChild(e),h.addEventListener(\"click\",function(){var f,g,h,i,j,k,l,m;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=new Image,i.src=h,j=document.createElement(\"canvas\"),j.width=i.width,j.height=i.height,k=j.getContext(\"2d\"),k.drawImage(i,0,0),l=j.toDataURL(\"image/png\"),m=document.createElement(\"a\"),m.href=l,m.download=\"wavedrom.png\",m.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),i.addEventListener(\"click\",function(){var f,g,h,i;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=document.createElement(\"a\"),i.href=h,i.download=\"wavedrom.svg\",i.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),e.addEventListener(\"contextmenu\",function(a){a.preventDefault()},!1),document.body.addEventListener(\"mousedown\",c,!1),f.preventDefault()},!1)}b.exports=d},{}],2:[function(a,b,c){\"use strict\";var d=a(\"./jsonml-parse\");b.exports=d},{\"./jsonml-parse\":15}],3:[function(a,b,c){\"use strict\";function d(){f(0,e(\"InputJSON_0\"),\"WaveDrom_Display_\")}var e=a(\"./eva\"),f=a(\"./render-wave-form\");b.exports=d},{\"./eva\":4,\"./render-wave-form\":28}],4:[function(require,module,exports){\"use strict\";function eva(id){function erra(a){return{signal:[{name:[\"tspan\",[\"tspan\",{class:\"error h5\"},\"Error: \"],a.message]}]}}var TheTextBox,source;if(TheTextBox=document.getElementById(id),TheTextBox.type&&\"textarea\"===TheTextBox.type)try{source=eval(\"(\"+TheTextBox.value+\")\")}catch(a){return erra(a)}else try{source=eval(\"(\"+TheTextBox.innerHTML+\")\")}catch(a){return erra(a)}if(\"[object Object]\"!==Object.prototype.toString.call(source))return erra({message:'[Semantic]: The root has to be an Object: \"{signal:[...]}\"'});if(source.signal){if(\"[object Array]\"!==Object.prototype.toString.call(source.signal))return erra({message:'[Semantic]: \"signal\" object has to be an Array \"signal:[]\"'})}else{if(!source.assign)return erra({message:'[Semantic]: \"signal:[...]\" or \"assign:[...]\" property is missing inside the root Object'});if(\"[object Array]\"!==Object.prototype.toString.call(source.assign))return erra({message:'[Semantic]: \"assign\" object hasto be an Array \"assign:[]\"'})}return source}module.exports=eva},{}],5:[function(a,b,c){\"use strict\";function d(a){var b=0,c=0,d=[];return a.forEach(function(a){\"vvv-2\"===a||\"vvv-3\"===a||\"vvv-4\"===a||\"vvv-5\"===a?c+=1:0!==c&&(d.push(b-(c+1)/2),c=0),b+=1}),0!==c&&d.push(b-(c+1)/2),d}b.exports=d},{}],6:[function(a,b,c){\"use strict\";function d(a,b,c){var d,e,f=[];if(4===a.length){for(e=0;e<c;e+=1){for(f.push(a[0]),d=0;d<b;d+=1)f.push(a[1]);for(f.push(a[2]),d=0;d<b;d+=1)f.push(a[3])}return f}for(1===a.length&&a.push(a[0]),f.push(a[0]),d=0;d<c*(2*(b+1))-1;d+=1)f.push(a[1]);return f}b.exports=d},{}],7:[function(a,b,c){\"use strict\";function d(a,b,c){var d;switch(d=[],a){case\"p\":d=e([\"pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"n\":d=e([\"nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"P\":d=e([\"Pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"N\":d=e([\"Nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"l\":case\"L\":case\"0\":d=e([\"000\"],b,c);break;case\"h\":case\"H\":case\"1\":d=e([\"111\"],b,c);break;case\"=\":d=e([\"vvv-2\"],b,c);break;case\"2\":d=e([\"vvv-2\"],b,c);break;case\"3\":d=e([\"vvv-3\"],b,c);break;case\"4\":d=e([\"vvv-4\"],b,c);break;case\"5\":d=e([\"vvv-5\"],b,c);break;case\"d\":d=e([\"ddd\"],b,c);break;case\"u\":d=e([\"uuu\"],b,c);break;case\"z\":d=e([\"zzz\"],b,c);break;default:d=e([\"xxx\"],b,c)}return d}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],8:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h,i,j,k,l,m,n,o,p,q,r,s;return d={p:\"pclk\",n:\"nclk\",P:\"Pclk\",N:\"Nclk\",h:\"pclk\",l:\"nclk\",H:\"Pclk\",L:\"Nclk\"},f={0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},g={0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},h={p:\"0\",n:\"1\",P:\"0\",N:\"1\",h:\"1\",l:\"0\",H:\"1\",L:\"0\",0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},i={p:\"\",n:\"\",P:\"\",N:\"\",h:\"\",l:\"\",H:\"\",L:\"\",0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},j={p:\"111\",n:\"000\",P:\"111\",N:\"000\",h:\"111\",l:\"000\",H:\"111\",L:\"000\",0:\"000\",1:\"111\",x:\"xxx\",d:\"ddd\",u:\"uuu\",z:\"zzz\",\"=\":\"vvv-2\",2:\"vvv-2\",3:\"vvv-3\",4:\"vvv-4\",5:\"vvv-5\"},k={p:\"nclk\",n:\"pclk\",P:\"nclk\",N:\"pclk\"},l={p:\"000\",n:\"111\",P:\"000\",N:\"111\"},m={hp:\"111\",Hp:\"111\",ln:\"000\",Ln:\"000\",nh:\"111\",Nh:\"111\",pl:\"000\",Pl:\"000\"},n=a.split(\"\"),o=j[n[1]],p=d[n[1]],void 0===p?(q=f[n[1]],void 0===q?e([\"xxx\"],b,c):(r=h[n[0]],void 0===r?e([\"xxx\"],b,c):e([r+\"m\"+q+i[n[0]]+g[n[1]],o],b,c))):(s=m[a],void 0!==s&&(p=s),q=k[n[1]],void 0===q?e([p,o],b,c):e([p,o,q,l[n[1]]],b,c))}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],9:[function(a,b,c){\"use strict\";var d=a(\"./process-all\"),e=a(\"./eva\"),f=a(\"./render-wave-form\"),g=a(\"./editor-refresh\");b.exports={processAll:d,eva:e,renderWaveForm:f,editorRefresh:g}},{\"./editor-refresh\":3,\"./eva\":4,\"./process-all\":21,\"./render-wave-form\":28}],10:[function(a,b,c){\"use strict\";function d(a,b){for(var c,d;b.childNodes.length;)b.removeChild(b.childNodes[0]);d=[\"svg\",{id:\"svgcontent_\"+a,xmlns:f.svg,\"xmlns:xlink\":f.xlink,overflow:\"hidden\"},[\"style\",\".pinname {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:end; font-family:Helvetica} .wirename {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:start; font-family:Helvetica} .wirename:hover {fill:blue} .gate {color:#000; fill:#ffc; fill-opacity: 1;stroke:#000; stroke-width:1; stroke-opacity:1} .gate:hover {fill:red !important; } .wire {fill:none; stroke:#000; stroke-width:1; stroke-opacity:1} .grid {fill:#fff; fill-opacity:1; stroke:none}\"]],c=e(d),b.insertBefore(c,null)}var e=a(\"./create-element\"),f=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30}],11:[function(a,b,c){\"use strict\";function d(a,b,c,d){for(var h,i,j;b.childNodes.length;)b.removeChild(b.childNodes[0]);for(i in g)break;j=g.default||g[i],c&&c.config&&c.config.skin&&g[c.config.skin]&&(j=g[c.config.skin]),0===a?(d.xs=Number(j[3][1][2][1].width),d.ys=Number(j[3][1][2][1].height),d.xlabel=Number(j[3][1][2][1].x),d.ym=Number(j[3][1][2][1].y)):j=[\"svg\",{id:\"svg\",xmlns:f.svg,\"xmlns:xlink\":f.xlink,height:\"0\"},[\"g\",{id:\"waves\"},[\"g\",{id:\"lanes\"}],[\"g\",{id:\"groups\"}]]],j[j.length-1][1].id=\"waves_\"+a,j[j.length-1][2][1].id=\"lanes_\"+a,j[j.length-1][3][1].id=\"groups_\"+a,j[1].id=\"svgcontent_\"+a,j[1].height=0,h=e(j),b.insertBefore(h,null)}var e=a(\"./create-element\"),f=a(\"./w3\"),g=a(\"./wave-skin\");b.exports=d},{\"./create-element\":2,\"./w3\":30,\"./wave-skin\":32}],12:[function(a,b,c){\"use strict\";function d(a,b,c){\"string\"==typeof c&&(c=new Function(\"event\",c)),\"function\"==typeof c&&(a[b]=c)}function e(a,b){if(b.name&&document.attachEvent)try{var c=document.createElement(\"<\"+a.tagName+\" name='\"+b.name+\"'>\");a.tagName===c.tagName&&(a=c)}catch(a){console.log(a)}for(var e in b)if(b.hasOwnProperty(e)){var i=b[e];e&&null!==i&&\"undefined\"!=typeof i&&(e=f[e.toLowerCase()]||e,\"style\"===e?\"undefined\"!=typeof a.style.cssText?a.style.cssText=i:a.style=i:h[e]?(d(a,e,i),g[e]&&d(a,g[e],i)):\"string\"==typeof i||\"number\"==typeof i||\"boolean\"==typeof i?(a.setAttribute(e,i),g[e]&&a.setAttribute(g[e],i)):(a[e]=i,g[e]&&(a[g[e]]=i)))}return a}var f={rowspan:\"rowSpan\",colspan:\"colSpan\",cellpadding:\"cellPadding\",cellspacing:\"cellSpacing\",tabindex:\"tabIndex\",accesskey:\"accessKey\",hidefocus:\"hideFocus\",usemap:\"useMap\",maxlength:\"maxLength\",readonly:\"readOnly\",contenteditable:\"contentEditable\"},g={enctype:\"encoding\",onscroll:\"DOMMouseScroll\"},h=function(a){for(var b,c={};a.length;)b=a.shift(),c[\"on\"+b.toLowerCase()]=b;return c}(\"blur,change,click,dblclick,error,focus,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,resize,scroll,select,submit,unload\".split(\",\"));b.exports=e},{}],13:[function(a,b,c){\"use strict\";function d(a,b){b&&(a.tagName&&\"style\"===a.tagName.toLowerCase()&&document.createStyleSheet?a.cssText=b:a.canHaveChildren!==!1&&a.appendChild(b))}b.exports=d},{}],14:[function(a,b,c){\"use strict\";function d(a){var b=document.createElement(\"div\");if(b.innerHTML=a,e(b),1===b.childNodes.length)return b.firstChild;for(var c=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\");b.firstChild;)c.appendChild(b.firstChild);return c}var e=a(\"./jsonml-trim-whitespace\");b.exports=d},{\"./jsonml-trim-whitespace\":16}],15:[function(a,b,c){\"use strict\";function d(a){return a instanceof Array&&\"string\"==typeof a[0]}function e(a,b,c){return document.createTextNode(\"[\"+a+\"-\"+c+\"]\")}var f,g,h=a(\"./jsonml-hydrate\"),i=a(\"./w3\"),j=a(\"./jsonml-append-child\"),k=a(\"./jsonml-add-attributes\"),l=a(\"./jsonml-trim-whitespace\"),m=null;f=function(a,b,c){for(var d=1;d<b.length;d++)b[d]instanceof Array||\"string\"==typeof b[d]?j(a,g(b[d],c)):b[d]&&b[d].value?j(a,h(b[d].value)):\"object\"==typeof b[d]&&null!==b[d]&&1===a.nodeType&&(a=k(a,b[d]));return a},g=function(a,b){var c;try{if(!a)return null;if(\"string\"==typeof a)return document.createTextNode(a);if(a&&a.value)return h(a.value);if(!d(a))throw new SyntaxError(\"invalid JsonML\");var k=a[0];if(!k){for(var n=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\"),o=2;o<a.length;o++)j(n,g(a[o],b));return l(n),1===n.childNodes.length?n.firstChild:n}return\"style\"===k.toLowerCase()&&document.createStyleSheet?(f(document.createStyleSheet(),a,b),null):(c=f(document.createElementNS(i.svg,k),a,b),l(c),c)}catch(c){try{var p=\"function\"==typeof m?m:e;return p(c,a,b)}catch(a){return document.createTextNode(\"[\"+a+\"]\")}}},b.exports=g},{\"./jsonml-add-attributes\":12,\"./jsonml-append-child\":13,\"./jsonml-hydrate\":14,\"./jsonml-trim-whitespace\":16,\"./w3\":30}],16:[function(a,b,c){\"use strict\";function d(a){return a&&3===a.nodeType&&(!a.nodeValue||!/\\S/.exec(a.nodeValue))}function e(a){if(a){for(;d(a.firstChild);)a.removeChild(a.firstChild);for(;d(a.lastChild);)a.removeChild(a.lastChild)}}b.exports=e},{}],17:[function(a,b,c){\"use strict\";var d={xs:20,ys:20,xg:120,yh0:0,yh1:0,yf0:0,yf1:0,y0:5,yo:30,tgo:-10,ym:15,xlabel:6,xmax:1,scale:1,head:{},foot:{}};b.exports=d},{}],18:[function(a,b,c){\"use strict\";function d(a,b){function c(a){return a>0?Math.round(a):1}var d;b.hscale=1,b.hscale0&&(b.hscale=b.hscale0),a&&a.config&&a.config.hscale&&(d=Math.round(c(a.config.hscale)),d>0&&(d>100&&(d=100),b.hscale=d)),b.yh0=0,b.yh1=0,b.head=a.head,b.xmin_cfg=0,b.xmax_cfg=1e12,a&&a.config&&a.config.hbounds&&2==a.config.hbounds.length&&(a.config.hbounds[0]=Math.floor(a.config.hbounds[0]),a.config.hbounds[1]=Math.ceil(a.config.hbounds[1]),a.config.hbounds[0]<a.config.hbounds[1]&&(b.xmin_cfg=2*Math.floor(a.config.hbounds[0]),b.xmax_cfg=2*Math.floor(a.config.hbounds[1]))),a&&a.head&&((a.head.tick||0===a.head.tick||a.head.tock||0===a.head.tock)&&(b.yh0=20),(a.head.tick||0===a.head.tick)&&(a.head.tick=a.head.tick+b.xmin_cfg/2),(a.head.tock||0===a.head.tock)&&(a.head.tock=a.head.tock+b.xmin_cfg/2),a.head.text&&(b.yh1=46,b.head.text=a.head.text)),b.yf0=0,b.yf1=0,b.foot=a.foot,a&&a.foot&&((a.foot.tick||0===a.foot.tick||a.foot.tock||0===a.foot.tock)&&(b.yf0=20),(a.foot.tick||0===a.foot.tick)&&(a.foot.tick=a.foot.tick+b.xmin_cfg/2),(a.foot.tock||0===a.foot.tock)&&(a.foot.tock=a.foot.tock+b.xmin_cfg/2),a.foot.text&&(b.yf1=46,b.foot.text=a.foot.text))}b.exports=d},{}],19:[function(a,b,c){\"use strict\";function d(a,b,c){var d,h,i,j,k,l,m=[],n=[],o=[];for(m=a.split(\"\"),i=m.shift(),k=!1,d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;for(n=n.concat(e(i,b,d));m.length;){for(h=i,i=m.shift(),\"<\"===i&&(k=!0,i=m.shift()),\">\"===i&&(k=!1,i=m.shift()),d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;n=k?n.concat(f(h+i,0,d-c.period)):n.concat(f(h+i,b,d))}for(j=0;j<c.phase;j+=1)o.push(n.shift());return o.length>0?(l=g(o).length,1==g([o[o.length-1]]).length&&1==g([n[0]]).length&&(l-=1)):l=0,[n,l]}var e=a(\"./gen-first-wave-brick\"),f=a(\"./gen-wave-brick\"),g=a(\"./find-lane-markers\");b.exports=d},{\"./find-lane-markers\":5,\"./gen-first-wave-brick\":7,\"./gen-wave-brick\":8}],20:[function(a,b,c){\"use strict\";function d(a,b){var c;return c=a.data,void 0===c?null:(\"string\"==typeof c&&(c=c.split(\" \")),c=c.slice(b))}function e(a,b){var c,e,g,h,i,j=[],k=[];for(c in a)e=a[c],b.period=e.period?e.period:1,b.phase=(e.phase?2*e.phase:0)+b.xmin_cfg,j.push([]),k[0]=e.name||\" \",k[1]=(e.phase||0)+b.xmin_cfg/2,e.wave?(h=f(e.wave,b.period*b.hscale-1,b),g=h[0],i=h[1]):g=null,j[j.length-1][0]=k.slice(0),j[j.length-1][1]=g,j[j.length-1][2]=d(e,i);return j}var f=a(\"./parse-wave-lane\");b.exports=e},{\"./parse-wave-lane\":19}],21:[function(a,b,c){\"use strict\";function d(){var a,b,c,d;for(c=0,a=document.querySelectorAll(\"*\"),b=0;b<a.length;b++)a.item(b).type&&\"WaveDrom\"===a.item(b).type&&(a.item(b).setAttribute(\"id\",\"InputJSON_\"+c),d=document.createElement(\"div\"),d.id=\"WaveDrom_Display_\"+c,a.item(b).parentNode.insertBefore(d,a.item(b)),c+=1);for(b=0;b<c;b+=1)g(b,e(\"InputJSON_\"+b),\"WaveDrom_Display_\"),f(b,\"WaveDrom_Display_\");document.head.innerHTML+='<style type=\"text/css\">div.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}</style>'}var e=a(\"./eva\"),f=a(\"./append-save-as-dialog\"),g=a(\"./render-wave-form\");b.exports=d},{\"./append-save-as-dialog\":1,\"./eva\":4,\"./render-wave-form\":28}],22:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f={},g={x:10};for(\"string\"!=typeof a[0]&&\"number\"!=typeof a[0]||(e=a[0],g.x=25),b.x+=g.x,c=0;c<a.length;c++)\"object\"==typeof a[c]&&(\"[object Array]\"===Object.prototype.toString.call(a[c])?(f.y=b.y,b=d(a[c],b),b.groups.push({x:b.xx,y:f.y,height:b.y-f.y,name:b.name})):(b.lanes.push(a[c]),b.width.push(b.x),b.y+=1));return b.xx=b.x,b.x-=g.x,b.name=e,b}b.exports=d},{}],23:[function(a,b,c){\"use strict\";function d(a,b,c,d,h){function i(){r&&s&&(x=document.createElementNS(g.svg,\"path\"),x.id=\"gmark_\"+A.from+\"_\"+A.to,x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" \"+s.x+\",\"+s.y),x.setAttribute(\"style\",\"fill:none;stroke:#00F;stroke-width:1\"),j.insertBefore(x,null))}var j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[],A={words:[],from:0,shape:\"\",to:0,label:\"\"},B={};if(b){for(k in b)if(h.period=b[k].period?b[k].period:1,h.phase=(b[k].phase?2*b[k].phase:0)+h.xmin_cfg,m=b[k].node)for(z=m.split(\"\"),n=0;z.length;)o=z.shift(),\".\"!==o&&(B[o]={x:h.xs*(2*n*h.period*h.hscale-h.phase)+h.xlabel,y:k*h.yo+h.y0+.5*h.ys}),n+=1;if(j=document.createElementNS(g.svg,\"g\"),j.id=\"wavearcs_\"+c,a.insertBefore(j,null),d.edge)for(k in d.edge)if(A.words=d.edge[k].split(\" \"),A.label=d.edge[k].substring(A.words[0].length),A.label=A.label.substring(1),A.from=A.words[0].substr(0,1),A.to=A.words[0].substr(-1,1),A.shape=A.words[0].slice(1,-1),r=B[A.from],s=B[A.to],i(),r&&s){switch(A.label&&(p=e.parse(A.label),p.unshift(\"text\",{style:\"font-size:10px;\",\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),p=f(p),q=f([\"rect\",{height:9,style:\"fill:#FFF;\"}]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width,q.setAttribute(\"width\",y)),t=s.x-r.x,u=s.y-r.y,v=(r.x+s.x)/2,w=(r.y+s.y)/2,A.shape){case\"-\":break;case\"~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~-\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"<->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"<~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"<-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"<-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"<-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;default:x.setAttribute(\"style\",\"fill:none;stroke:#F00;stroke-width:1\")}A.label&&(p.setAttribute(\"x\",v),p.setAttribute(\"y\",w+3),q.setAttribute(\"x\",v-y/2),q.setAttribute(\"y\",w-5))}for(l in B)l===l.toLowerCase()&&B[l].x>0&&(q=f([\"rect\",{y:B[l].y-4,height:8,style:\"fill:#FFF;\"}]),p=f([\"text\",{style:\"font-size:8px;\",x:B[l].x,y:B[l].y+2,\"text-anchor\":\"middle\"},l+\"\"]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width+2,q.setAttribute(\"x\",B[l].x-y/2),q.setAttribute(\"width\",y))}}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30,tspan:33}],24:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f;for(b.xmax=Math.max(b.xmax,b.x),c=b.y,f=a.length,e=1;e<f;e++)\"[object Array]\"===Object.prototype.toString.call(a[e])?b=d(a[e],{x:b.x+1,y:b.y,xmax:b.xmax}):(a[e]={name:a[e],x:b.x+1,y:b.y},b.y+=2);return a[0]={name:a[0],x:b.x,y:Math.round((c+(b.y-2))/2)},b.x--,b}function e(a,b,c){var d,e,f=\" M 4,0 C 4,1.1 3.1,2 2,2 0.9,2 0,1.1 0,0 c 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 z\",g={\"~\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\"+f,\"=\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\",\"&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\",\"~&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\"+f,\"|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\",\"~|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\"+f,\"^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\",\"~^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\"+f,\"+\":\"m -8,5 0,-10 m -5,5 10,0 m 3,0 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\",\"*\":\"m -4,4 -8,-8 m 0,8 8,-8 m 4,4 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\"},h={BUF:1,INV:1,AND:\"&\",NAND:\"&\",OR:\"â‰¥1\",NOR:\"â‰¥1\",XOR:\"=1\",XNOR:\"=1\",box:\"\"},i={INV:1,NAND:1,NOR:1,XNOR:1};return c===b&&(c=4,b=-4),d=g[a],e=h[a],d?[\"path\",{class:\"gate\",d:d}]:e?[\"g\",[\"path\",{class:\"gate\",d:\"m -16,\"+(b-3)+\" 16,0 0,\"+(c-b+6)+\" -16,0 z\"+(i[a]?f:\"\")}],[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},e+\"\"]]]:[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},a+\"\"]]}function f(a){var b,c,d,f=[\"g\"],g=[],h=a.length;for(b=2;b<h;b++)g.push(a[b][1]);for(c=Math.min.apply(null,g),d=Math.max.apply(null,g),f.push([\"g\",{transform:\"translate(16,0)\"},[\"path\",{d:\"M  \"+a[2][0]+\",\"+c+\" \"+a[2][0]+\",\"+d,class:\"wire\"}]]),b=2;b<h;b++)f.push([\"g\",[\"path\",{d:\"m  \"+a[b][0]+\",\"+a[b][1]+\" 16,0\",class:\"wire\"}]]);return f.push([\"g\",{transform:\"translate(\"+a[1][0]+\",\"+a[1][1]+\")\"},[\"title\",a[0]],e(a[0],c-a[1][1],d-a[1][1])]),f}function g(a,b){var c,d,e,h,i,j=[\"g\"],k=[];if(\"[object Array]\"===Object.prototype.toString.call(a)){for(d=a.length,k.push(a[0].name),k.push([32*(b-a[0].x),8*a[0].y]),c=1;c<d;c++)\"[object Array]\"===Object.prototype.toString.call(a[c])?k.push([32*(b-a[c][0].x),8*a[c][0].y]):k.push([32*(b-a[c].x),8*a[c].y]);for(j.push(f(k)),c=1;c<d;c++)j.push(g(a[c],b))}else i=a.name,e=32*(b-a.x),h=8*a.y,j.push([\"g\",{transform:\"translate(\"+e+\",\"+h+\")\"},[\"title\",i],[\"path\",{d:\"M 2,0 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z\"}],[\"text\",[\"tspan\",{x:\"-4\",y:\"4\",class:\"pinname\"},i]]]);return j}function h(a,b){var c,e,f,h,j,k,l,m,n,o,p=[\"g\"],q=[\"g\"];for(m=b.assign.length,e={x:0,y:2,xmax:0},c=b.assign,l=0;l<m;l++)e=d(c[l],e),e.x++;for(f=e.xmax+3,l=0;l<m;l++)p.push(g(c[l],f));for(j=32*(f+1)+1,k=8*(e.y+1)-7,m=4*(f+1),o=e.y+1,l=0;l<=m;l++)for(n=0;n<=o;n++)q.push([\"rect\",{height:1,width:1,x:8*l-.5,y:8*n-.5,class:\"grid\"}]);h=document.getElementById(\"svgcontent_\"+a),h.setAttribute(\"viewBox\",\"0 0 \"+j+\" \"+k),h.setAttribute(\"width\",j),h.setAttribute(\"height\",k),h.insertBefore(i([\"g\",{transform:\"translate(0.5, 0.5)\"},q,p]),null)}var i=a(\"./create-element\");b.exports=h},{\"./create-element\":2}],25:[function(a,b,c){\"use strict\";function d(a,b,c,d){var f,g,h,i,j,k,l,m,n=[];if(b){g=document.createElementNS(e.svg,\"g\"),g.id=\"wavegaps_\"+c,a.insertBefore(g,null),l=!1;for(f in b)if(d.period=b[f].period?b[f].period:1,d.phase=(b[f].phase?2*b[f].phase:0)+d.xmin_cfg,h=document.createElementNS(e.svg,\"g\"),h.id=\"wavegap_\"+f+\"_\"+c,h.setAttribute(\"transform\",\"translate(0,\"+(d.y0+f*d.yo)+\")\"),g.insertBefore(h,null),k=b[f].wave)for(n=k.split(\"\"),j=0;n.length;)m=n.shift(),\"<\"===m&&(l=!0,m=n.shift()),\">\"===m&&(l=!1,m=n.shift()),j+=l?1:2*d.period,\"|\"===m&&(i=document.createElementNS(e.svg,\"use\"),i.setAttributeNS(e.xlink,\"xlink:href\",\"#gap\"),i.setAttribute(\"transform\",\"translate(\"+d.xs*((j-(l?0:d.period))*d.hscale-d.phase)+\")\"),h.insertBefore(i,null))}}var e=a(\"./w3\");b.exports=d},{\"./w3\":30}],26:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h=[\"g\"];return a.forEach(function(a,i){h.push([\"path\",{id:\"group_\"+i+\"_\"+b,d:\"m \"+(a.x+.5)+\",\"+(a.y*c.yo+3.5+c.yh0+c.yh1)+\" c -3,0 -5,2 -5,5 l 0,\"+(a.height*c.yo-16)+\" c 0,3 2,5 5,5\",style:\"stroke:#0041c4;stroke-width:1;fill:none\"}]),void 0!==a.name&&(d=a.x-10,f=c.yo*(a.y+a.height/2)+c.yh0+c.yh1,g=e.parse(a.name),g.unshift(\"text\",{\"text-anchor\":\"middle\",class:\"info\",\"xml:space\":\"preserve\"}),h.push([\"g\",{transform:\"translate(\"+d+\",\"+f+\")\"},[\"g\",{transform:\"rotate(270)\"},g]]))}),h}var e=a(\"tspan\");b.exports=d},{tspan:33}],27:[function(a,b,c){\"use strict\";function d(a,b,c,d){function g(a,b,c){var d;a[b]&&a[b].text&&(d=e.parse(a[b].text),d.unshift(\"text\",{x:a.xmax*a.xs/2,y:c,\"text-anchor\":\"middle\",fill:\"#000\",\"xml:space\":\"preserve\"}),d=f(d),j.insertBefore(d,null))}function h(a,b,c,d,g,h,k){var l,m,n,o,p=1,q=0,r=[];if(void 0!==a[b]&&void 0!==a[b][c]){if(n=a[b][c],\"string\"==typeof n)n=n.split(\" \");else if(\"number\"==typeof n||\"boolean\"==typeof n)for(m=Number(n),n=[],i=0;i<k;i+=1)n.push(i+m);if(\"[object Array]\"===Object.prototype.toString.call(n)&&0!==n.length){if(1===n.length)if(m=Number(n[0]),isNaN(m))r=n;else for(i=0;i<k;i+=1)r[i]=i+m;else if(2===n.length)if(m=Number(n[0]),p=Number(n[1]),o=n[1].split(\".\"),2===o.length&&(q=o[1].length),isNaN(m)||isNaN(p))r=n;else for(m=p*m,i=0;i<k;i+=1)r[i]=(p*i+m).toFixed(q);else r=n;for(i=0;i<k;i+=1)o=r[i],l=e.parse(o),l.unshift(\"text\",{x:i*g+d,y:h,\"text-anchor\":\"middle\",class:\"muted\",\"xml:space\":\"preserve\"}),l=f(l),j.insertBefore(l,null)}}}var i,j,k,l,m,n;for(l=2*d.hscale,m=l*d.xs,k=d.xmax/l,n=b.length*d.yo,j=f([\"g\",{id:\"gmarks_\"+c}]),a.insertBefore(j,a.firstChild),i=0;i<k+1;i+=1)j.insertBefore(f([\"path\",{id:\"gmark_\"+i+\"_\"+c,d:\"m \"+i*m+\",0 0,\"+n,style:\"stroke:#888;stroke-width:0.5;stroke-dasharray:1,3\"}]),null);g(d,\"head\",d.yh0?-33:-13),g(d,\"foot\",n+(d.yf0?45:25)),h(d,\"head\",\"tick\",0,m,-5,k+1),h(d,\"head\",\"tock\",m/2,m,-5,k),h(d,\"foot\",\"tick\",0,m,n+15,k+1),h(d,\"foot\",\"tock\",m/2,m,n+15,k)}var e=a(\"tspan\"),f=a(\"./create-element\");b.exports=d},{\"./create-element\":2,tspan:33}],28:[function(a,b,c){\"use strict\";function d(a,b,c){var d,r,s,t,u,v,w,x,y,z=0;if(b.signal){p(a,document.getElementById(c+a),b,f),h(b,f),d=e(b.signal,{x:0,y:0,xmax:0,width:[],lanes:[],groups:[]}),r=document.getElementById(\"lanes_\"+a),s=document.getElementById(\"groups_\"+a),u=i(d.lanes,f),x=m(r,u,a,f);for(y in x)z=Math.max(z,x[y]+d.width[y]);j(r,u,a,f),o(r,d.lanes,a,b,f),k(r,d.lanes,a,f),s.insertBefore(g(l(d.groups,a,f)),null),f.xg=Math.ceil((z-f.tgo)/f.xs)*f.xs,v=f.xg+f.xs*(f.xmax+1),w=u.length*f.yo+f.yh0+f.yh1+f.yf0+f.yf1,t=document.getElementById(\"svgcontent_\"+a),t.setAttribute(\"viewBox\",\"0 0 \"+v+\" \"+w),t.setAttribute(\"width\",v),t.setAttribute(\"height\",w),t.setAttribute(\"overflow\",\"hidden\"),r.setAttribute(\"transform\",\"translate(\"+(f.xg+.5)+\", \"+(f.yh0+f.yh1+.5)+\")\")}else b.assign&&(q(a,document.getElementById(c+a),b),n(a,b))}var e=a(\"./rec\"),f=a(\"./lane\"),g=a(\"./create-element\"),h=a(\"./parse-config\"),i=a(\"./parse-wave-lanes\"),j=a(\"./render-marks\"),k=a(\"./render-gaps\"),l=a(\"./render-groups\"),m=a(\"./render-wave-lane\"),n=a(\"./render-assign\"),o=a(\"./render-arcs\"),p=a(\"./insert-svg-template\"),q=a(\"./insert-svg-template-assign\");b.exports=d},{\"./create-element\":2,\"./insert-svg-template\":11,\"./insert-svg-template-assign\":10,\"./lane\":17,\"./parse-config\":18,\"./parse-wave-lanes\":20,\"./rec\":22,\"./render-arcs\":23,\"./render-assign\":24,\"./render-gaps\":25,\"./render-groups\":26,\"./render-marks\":27,\"./render-wave-lane\":29}],29:[function(a,b,c){\"use strict\";function d(a,b,c,d){var i,j,k,l,m,n,o,p,q,r=[1],s=0,t=0,u=[];for(j=0;j<b.length;j+=1)if(p=b[j][0][0],p&&(l=f([\"g\",{id:\"wavelane_\"+j+\"_\"+c,transform:\"translate(0,\"+(d.y0+j*d.yo)+\")\"}]),a.insertBefore(l,null),n=e.parse(p),n.unshift(\"text\",{x:d.tgo,y:d.ym,class:\"info\",\"text-anchor\":\"end\",\"xml:space\":\"preserve\"}),n=f(n),l.insertBefore(n,null),u.push(n.getBBox().width),q=b[j][0][1],q=q>0?Math.ceil(2*q)-2*q:-2*q,m=f([\"g\",{id:\"wavelane_draw_\"+j+\"_\"+c,transform:\"translate(\"+q*d.xs+\", 0)\"}]),l.insertBefore(m,null),b[j][1])){for(i=0;i<b[j][1].length;i+=1)o=document.createElementNS(g.svg,\"use\"),o.setAttributeNS(g.xlink,\"xlink:href\",\"#\"+b[j][1][i]),o.setAttribute(\"transform\",\"translate(\"+i*d.xs+\")\"),m.insertBefore(o,null);if(b[j][2]&&b[j][2].length&&(r=h(b[j][1]),0!==r.length))for(k in r)b[j][2]&&\"undefined\"!=typeof b[j][2][k]&&(n=e.parse(b[j][2][k]),n.unshift(\"text\",{x:r[k]*d.xs+d.xlabel,y:d.ym,\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),n=f(n),m.insertBefore(n,null));b[j][1].length>s&&(s=b[j][1].length)}return d.xmax=Math.min(s,d.xmax_cfg-d.xmin_cfg),d.xg=t+20,u}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\"),h=a(\"./find-lane-markers\");b.exports=d},{\"./create-element\":2,\"./find-lane-markers\":5,\"./w3\":30,tspan:33}],30:[function(a,b,c){\"use strict\";b.exports={svg:\"http://www.w3.org/2000/svg\",xlink:\"http://www.w3.org/1999/xlink\",xmlns:\"http://www.w3.org/XML/1998/namespace\"}},{}],31:[function(a,b,c){\"use strict\";window.WaveDrom=window.WaveDrom||{};var d=a(\"./\");window.WaveDrom.ProcessAll=d.processAll,window.WaveDrom.RenderWaveForm=d.renderWaveForm,window.WaveDrom.EditorRefresh=d.editorRefresh,window.WaveDrom.eva=d.eva},{\"./\":9}],32:[function(a,b,c){\"use strict\";b.exports=window.WaveSkin},{}],33:[function(a,b,c){\"use strict\";function d(a,b){b.add&&b.add.split(\";\").forEach(function(b){var c=b.split(\" \");a[c[0]][c[1]]=!0}),b.del&&b.del.split(\";\").forEach(function(b){var c=b.split(\" \");delete a[c[0]][c[1]]})}function e(a){return Object.keys(a).reduce(function(b,c){var d=Object.keys(a[c]);return d.length>0&&(b[c]=d.join(\" \")),b},{})}function f(a){var b,c,f,i,j;if(void 0===a)return[];if(\"number\"==typeof a)return[a+\"\"];if(\"string\"!=typeof a)return[a];for(c=[],b={\"text-decoration\":{},\"font-weight\":{},\"font-style\":{},\"baseline-shift\":{},\"font-size\":{},\"font-family\":{}};;){if(f=a.search(g),f===-1)return c.push([\"tspan\",e(b),a]),c;if(f>0&&(j=a.slice(0,f),c.push([\"tspan\",e(b),j])),i=a.match(g)[0],d(b,h[i]),a=a.slice(f+i.length),0===a.length)return c}}var g=/<o>|<ins>|<s>|<sub>|<sup>|<b>|<i>|<tt>|<\\/o>|<\\/ins>|<\\/s>|<\\/sub>|<\\/sup>|<\\/b>|<\\/i>|<\\/tt>/,h={\"<o>\":{add:\"text-decoration overline\"},\"</o>\":{del:\"text-decoration overline\"},\"<ins>\":{add:\"text-decoration underline\"},\"</ins>\":{del:\"text-decoration underline\"},\"<s>\":{add:\"text-decoration line-through\"},\"</s>\":{del:\"text-decoration line-through\"},\"<b>\":{add:\"font-weight bold\"},\"</b>\":{del:\"font-weight bold\"},\"<i>\":{add:\"font-style italic\"},\"</i>\":{del:\"font-style italic\"},\"<sub>\":{add:\"baseline-shift sub;font-size .7em\"},\"</sub>\":{del:\"baseline-shift sub;font-size .7em\"},\"<sup>\":{add:\"baseline-shift super;font-size .7em\"},\"</sup>\":{del:\"baseline-shift super;font-size .7em\"},\"<tt>\":{add:\"font-family monospace\"},\"</tt>\":{del:\"font-family monospace\"}};c.parse=f},{}]},{},[31]);</script><div><script type=\"WaveDrom\">{\"signal\": [{\"name\": \"clk\", \"wave\": \"P....................x\"}, {\"name\": \"/HWSystem[HWSystem][x]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\"]}, {\"name\": \"/HWSystem[HWSystem][y]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\"]}, {\"name\": \"/HWSystem[HWSystem][ci]\", \"wave\": \"x0.....10....10....10x\", \"data\": []}, {\"name\": \"/HWSystem[HWSystem][s]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"8\", \"E\", \"C\", \"2\", \"0\", \"D\", \"A\", \"0\", \"E\", \"4\", \"8\", \"F\", \"C\", \"2\", \"0\", \"C\", \"A\", \"1\", \"E\"]}, {\"name\": \"/HWSystem[HWSystem][co]\", \"wave\": \"x0...1.0.1010..1.0.10x\", \"data\": []}], \"head\": {\"text\": \"wvf\", \"tock\": 0}}</script></div><script>WaveDrom.ProcessAll();</script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sys = py4hw.HWSystem()\n",
    "\n",
    "x = sys.wire('x', 4)\n",
    "y = sys.wire('y', 4)\n",
    "ci = sys.wire('ci')\n",
    "s = sys.wire('s', 4)\n",
    "co = sys.wire('co')\n",
    "fan = FullAdderN(sys, 'fa', x, y, ci, s, co)\n",
    "\n",
    "py4hw.Sequence(sys, 'x', [1,3,5,7,9], x)\n",
    "py4hw.Sequence(sys, 'y', [7,11], y)\n",
    "py4hw.Sequence(sys, 'ci', [0, 0, 0, 0, 0, 1], ci)\n",
    "\n",
    "wvf = py4hw.Waveform(sys, 'wvf', [x,y,ci,s,co])\n",
    "\n",
    "sys.getSimulator().clk(20)\n",
    "wvf.draw_wavedrom()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cdae67c9",
   "metadata": {},
   "source": [
    "### Generating Verilog for synthesis ###\n",
    "To generate verilog for the circuit, all the structural elements are translated into verllog.\n",
    "By now all instances of the circuit will be generated as a separate verilog module. This will create a rather large output. In future versions of py4hw this will be simplified."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0d6a1e0e",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "transpiling /HWSystem[HWSystem]/FullAdderN[fa]/FullAdder[FA0]\n",
      "transpiling /HWSystem[HWSystem]/FullAdderN[fa]/FullAdder[FA1]\n",
      "transpiling /HWSystem[HWSystem]/FullAdderN[fa]/FullAdder[FA2]\n",
      "transpiling /HWSystem[HWSystem]/FullAdderN[fa]/FullAdder[FA3]\n",
      "// This file was automatically created by py4hw RTL generator\n",
      "module FullAdderN (\n",
      "\tinput [3:0] x,\n",
      "\tinput [3:0] y,\n",
      "\tinput  ci,\n",
      "\toutput [3:0] s,\n",
      "\toutput  co);\n",
      "wire w_xb_2;\n",
      "wire w_yb_2;\n",
      "wire w_sb_2;\n",
      "wire w_co0;\n",
      "wire w_yb_1;\n",
      "wire w_sb_1;\n",
      "wire w_xb_3;\n",
      "wire w_yb_3;\n",
      "wire w_sb_3;\n",
      "wire w_co3;\n",
      "wire w_yb_0;\n",
      "wire w_xb_0;\n",
      "wire w_sb_0;\n",
      "wire w_co2;\n",
      "wire w_co1;\n",
      "wire w_xb_1;\n",
      "\n",
      "assign w_xb_0 = x[0];\n",
      "assign w_xb_1 = x[1];\n",
      "assign w_xb_2 = x[2];\n",
      "assign w_xb_3 = x[3];\n",
      "assign w_yb_0 = y[0];\n",
      "assign w_yb_1 = y[1];\n",
      "assign w_yb_2 = y[2];\n",
      "assign w_yb_3 = y[3];\n",
      "assign s ={w_sb_3,w_sb_2,w_sb_1,w_sb_0};\n",
      "FullAdder_26e837e1908 i_FA0(.x(w_xb_0),.y(w_yb_0),.ci(ci),.s(w_sb_0),.co(w_co0));\n",
      "FullAdder_26e837e1c88 i_FA1(.x(w_xb_1),.y(w_yb_1),.ci(w_co0),.s(w_sb_1),.co(w_co1));\n",
      "FullAdder_26e837ec048 i_FA2(.x(w_xb_2),.y(w_yb_2),.ci(w_co1),.s(w_sb_2),.co(w_co2));\n",
      "FullAdder_26e837ec3c8 i_FA3(.x(w_xb_3),.y(w_yb_3),.ci(w_co2),.s(w_sb_3),.co(w_co3));\n",
      "assign co = w_co3;\n",
      "endmodule\n",
      "\n",
      "// This file was automatically created by py4hw RTL generator\n",
      "module FullAdder_26e837e1908 (\n",
      "\tinput  x,\n",
      "\tinput  y,\n",
      "\tinput  ci,\n",
      "\toutput  reg  s,\n",
      "\toutput  reg  co);\n",
      "// Code generated from propagate method\n",
      "// variable declaration \n",
      "reg i0;\n",
      "reg i1;\n",
      "reg i2;\n",
      "reg i3;\n",
      "// process \n",
      "always @(*)\n",
      "begin\n",
      "s<=i0^ci;\n",
      "co<=i1|i2;\n",
      "i0<=x^y;\n",
      "i1<=x&y;\n",
      "i2<=i3&ci;\n",
      "i3<=x^y;\n",
      "end\n",
      "endmodule\n",
      "\n",
      "// This file was automatically created by py4hw RTL generator\n",
      "module FullAdder_26e837e1c88 (\n",
      "\tinput  x,\n",
      "\tinput  y,\n",
      "\tinput  ci,\n",
      "\toutput  reg  s,\n",
      "\toutput  reg  co);\n",
      "// Code generated from propagate method\n",
      "// variable declaration \n",
      "reg i0;\n",
      "reg i1;\n",
      "reg i2;\n",
      "reg i3;\n",
      "// process \n",
      "always @(*)\n",
      "begin\n",
      "s<=i0^ci;\n",
      "co<=i1|i2;\n",
      "i0<=x^y;\n",
      "i1<=x&y;\n",
      "i2<=i3&ci;\n",
      "i3<=x^y;\n",
      "end\n",
      "endmodule\n",
      "\n",
      "// This file was automatically created by py4hw RTL generator\n",
      "module FullAdder_26e837ec048 (\n",
      "\tinput  x,\n",
      "\tinput  y,\n",
      "\tinput  ci,\n",
      "\toutput  reg  s,\n",
      "\toutput  reg  co);\n",
      "// Code generated from propagate method\n",
      "// variable declaration \n",
      "reg i0;\n",
      "reg i1;\n",
      "reg i2;\n",
      "reg i3;\n",
      "// process \n",
      "always @(*)\n",
      "begin\n",
      "s<=i0^ci;\n",
      "co<=i1|i2;\n",
      "i0<=x^y;\n",
      "i1<=x&y;\n",
      "i2<=i3&ci;\n",
      "i3<=x^y;\n",
      "end\n",
      "endmodule\n",
      "\n",
      "// This file was automatically created by py4hw RTL generator\n",
      "module FullAdder_26e837ec3c8 (\n",
      "\tinput  x,\n",
      "\tinput  y,\n",
      "\tinput  ci,\n",
      "\toutput  reg  s,\n",
      "\toutput  reg  co);\n",
      "// Code generated from propagate method\n",
      "// variable declaration \n",
      "reg i0;\n",
      "reg i1;\n",
      "reg i2;\n",
      "reg i3;\n",
      "// process \n",
      "always @(*)\n",
      "begin\n",
      "s<=i0^ci;\n",
      "co<=i1|i2;\n",
      "i0<=x^y;\n",
      "i1<=x&y;\n",
      "i2<=i3&ci;\n",
      "i3<=x^y;\n",
      "end\n",
      "endmodule\n",
      "\n"
     ]
    }
   ],
   "source": [
    "rtl = py4hw.VerilogGenerator(fan)\n",
    "print(rtl.getVerilogForHierarchy())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "149ebc61",
   "metadata": {},
   "source": [
    "### Final Comments ###\n",
    "This lesson was used to describe how to use [what other HDLs call] generative structural code.\n",
    "If you come from a software background you will easily understand that instatiating an object from a class is equivalent to create a circuit, and if you put that instantiation inside a loop in will create a collection of objects.\n",
    "\n",
    "On the other hand, in py4hw we try to promote the reuse of existing circuits. So we would encourage to use the Add circuit from the library to implement the same circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d963e6b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<script>var WaveSkin=WaveSkin||{};WaveSkin.default=[\"svg\",{\"id\":\"svg\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"height\":\"0\"},[\"style\",{\"type\":\"text/css\"},\"text{font-size:11pt;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;fill-opacity:1;font-family:Helvetica}.muted{fill:#aaa}.warning{fill:#f6b900}.error{fill:#f60000}.info{fill:#0041c4}.success{fill:#00ab00}.h1{font-size:33pt;font-weight:bold}.h2{font-size:27pt;font-weight:bold}.h3{font-size:20pt;font-weight:bold}.h4{font-size:14pt;font-weight:bold}.h5{font-size:11pt;font-weight:bold}.h6{font-size:8pt;font-weight:bold}.s1{fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s2{fill:none;stroke:#000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s3{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s4{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s5{fill:#fff;stroke:none}.s6{color:#000;fill:#ffffb4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s7{color:#000;fill:#ffe0b9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s8{color:#000;fill:#b9e0ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s9{fill:#000;fill-opacity:1;stroke:none}.s10{color:#000;fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate}.s11{fill:#0041c4;fill-opacity:1;stroke:none}.s12{fill:none;stroke:#0041c4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}\"],[\"defs\",[\"g\",{\"id\":\"socket\"},[\"rect\",{\"y\":\"15\",\"x\":\"6\",\"height\":\"20\",\"width\":\"20\"}]],[\"g\",{\"id\":\"pclk\"},[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"nclk\"},[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"000\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m0\"},[\"path\",{\"d\":\"m0,20 3,0 3,-10 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0m1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0md\"},[\"path\",{\"d\":\"m8,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m0,20 5,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"111\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1m1\"},[\"path\",{\"d\":\"M0,0 3,0 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"1md\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mu\"},[\"path\",{\"d\":\"M0,0 5,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M8,0 18,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"1mz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xxx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm0\"},[\"path\",{\"d\":\"M0,0 4,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 8,17\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xm1\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 4,20 9,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 5,15\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmx\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 15,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 20,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M5,20 20,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,20 20,10\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m15,20 5,-5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmd\"},[\"path\",{\"d\":\"m0,0 4,0 c 3,10 6,20 16,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 5.5,4.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 8,12\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m5,20 5,-5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m10,20 2.5,-2.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 5,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 10,0\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 10,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 6,14\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"xmz\"},[\"path\",{\"d\":\"m0,0 4,0 c 6,10 11,10 16,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 4,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 4.5,0.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 6.5,3.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 8.5,6.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 11.5,8.5\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"ddd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dm0\"},[\"path\",{\"d\":\"m0,20 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,20 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dm1\"},[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmx\"},[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 5,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 4,16\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmd\"},[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"dmu\"},[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10.107603,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"dmz\"},[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"uuu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"um0\"},[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"um1\"},[\"path\",{\"d\":\"M0,0 10,0\",\"class\":\"s3\"}],[\"path\",{\"d\":\"m12,0 8,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umx\"},[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M3.5,1.5 5,0\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"umd\"},[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umu\"},[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s3\"}]],[\"g\",{\"id\":\"umz\"},[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s4\"}]],[\"g\",{\"id\":\"zzz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm0\"},[\"path\",{\"d\":\"m0,10 6,0 3,10 11,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zm1\"},[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmx\"},[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 6.5,8.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"zmd\"},[\"path\",{\"d\":\"m0,10 7,0 c 3,5 8,10 13,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmu\"},[\"path\",{\"d\":\"m0,10 7,0 C 10,5 15,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmz\"},[\"path\",{\"d\":\"m0,10 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"gap\"},[\"path\",{\"d\":\"m7,-2 -4,0 c -5,0 -5,24 -10,24 l 4,0 C 2,22 2,-2 7,-2 z\",\"class\":\"s5\"}],[\"path\",{\"d\":\"M-7,22 C -2,22 -2,-2 3,-2\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M-3,22 C 2,22 2,-2 7,-2\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-3\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-3\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-3\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-3\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-3\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-3\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-3\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-3\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-4\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-4\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-5\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-5\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-4\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-4\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-4\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-4\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-4\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-4\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-5\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-5\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-5\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-5\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-5\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-5\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Pclk\"},[\"path\",{\"d\":\"M-3,12 0,3 3,12 C 1,11 -1,11 -3,12 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"M0,20 0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"Nclk\"},[\"path\",{\"d\":\"M-3,8 0,17 3,8 C 1,9 -1,9 -3,8 z\",\"class\":\"s9\"}],[\"path\",{\"d\":\"m0,0 0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vvv-2\"},[\"path\",{\"d\":\"M20,20 0,20 0,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm0-2\"},[\"path\",{\"d\":\"M0,20 0,0 3,0 9,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 3,0 9,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vm1-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 9,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmx-2\"},[\"path\",{\"d\":\"M0,0 0,20 3,20 6,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m20,15 -5,5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,10 10,20\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,5 8,17\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M20,0 7,13\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M15,0 7,8\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M10,0 9,1\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"vmd-2\"},[\"path\",{\"d\":\"m0,0 0,20 20,0 C 10,20 7,10 3,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 4,10 7,20 17,20\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmu-2\"},[\"path\",{\"d\":\"m0,0 0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,20 3,0 C 7,10 10,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmz-2\"},[\"path\",{\"d\":\"M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 c 7,10 12,10 17,10\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 3,0 C 10,10 15,10 20,10\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"0mv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"1mv-2\"},[\"path\",{\"d\":\"M2.875,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"xmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,5 3.5,1.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,10 4.5,5.5\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,15 6,9\",\"class\":\"s2\"}],[\"path\",{\"d\":\"M0,20 4,16\",\"class\":\"s2\"}]],[\"g\",{\"id\":\"dmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 3,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,20 9,0 20,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"m0,20 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"umv-2\"},[\"path\",{\"d\":\"M3,0 20,0 20,20 9,20 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"zmv-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m6,10 3,10 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,10 6,10 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-3-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-4-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-5-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-3\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s6\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-4\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s7\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-5\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s8\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"vmv-2-2\"},[\"path\",{\"d\":\"M9,0 20,0 20,20 9,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"M3,0 0,0 0,20 3,20 6,10 z\",\"class\":\"s10\"}],[\"path\",{\"d\":\"m0,0 3,0 6,20 11,0\",\"class\":\"s1\"}],[\"path\",{\"d\":\"M0,20 3,20 9,0 20,0\",\"class\":\"s1\"}]],[\"g\",{\"id\":\"arrow0\"},[\"path\",{\"d\":\"m-12,-3 9,3 -9,3 c 1,-2 1,-4 0,-6 z\",\"class\":\"s11\"}],[\"path\",{\"d\":\"M0,0 -15,0\",\"class\":\"s12\"}]],[\"marker\",{\"id\":\"arrowhead\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"0 -4 11 8\",\"refX\":\"15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 11 0 0 4z\"}]],[\"marker\",{\"id\":\"arrowtail\",\"style\":\"fill:#0041c4\",\"markerHeight\":\"7\",\"markerWidth\":\"10\",\"markerUnits\":\"strokeWidth\",\"viewBox\":\"-11 -4 11 8\",\"refX\":\"-15\",\"refY\":\"0\",\"orient\":\"auto\"},[\"path\",{\"d\":\"M0 -4 -11 0 0 4z\"}]]],[\"g\",{\"id\":\"waves\"},[\"g\",{\"id\":\"lanes\"}],[\"g\",{\"id\":\"groups\"}]]];\n",
       "</script><script>/*! wavedrom 2016-07-28 */\n",
       "!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i=\"function\"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error(\"Cannot find module '\"+g+\"'\");throw j.code=\"MODULE_NOT_FOUND\",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f=\"function\"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){\"use strict\";function d(a,b){function c(a){var b=parseInt(e.style.left,10),d=parseInt(e.style.top,10);(a.x<b||a.x>b+e.offsetWidth||a.y<d||a.y>d+e.offsetHeight)&&(e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1))}var d,e;d=document.getElementById(b+a),d.childNodes[0].addEventListener(\"contextmenu\",function(f){var g,h,i;e=document.createElement(\"div\"),e.className=\"wavedromMenu\",e.style.top=f.y+\"px\",e.style.left=f.x+\"px\",g=document.createElement(\"ul\"),h=document.createElement(\"li\"),h.innerHTML=\"Save as PNG\",g.appendChild(h),i=document.createElement(\"li\"),i.innerHTML=\"Save as SVG\",g.appendChild(i),e.appendChild(g),document.body.appendChild(e),h.addEventListener(\"click\",function(){var f,g,h,i,j,k,l,m;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=new Image,i.src=h,j=document.createElement(\"canvas\"),j.width=i.width,j.height=i.height,k=j.getContext(\"2d\"),k.drawImage(i,0,0),l=j.toDataURL(\"image/png\"),m=document.createElement(\"a\"),m.href=l,m.download=\"wavedrom.png\",m.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),i.addEventListener(\"click\",function(){var f,g,h,i;f=\"\",0!==a&&(g=document.getElementById(b+0),f+=g.innerHTML.substring(166,g.innerHTML.indexOf('<g id=\"waves_0\">'))),f=[d.innerHTML.slice(0,166),f,d.innerHTML.slice(166)].join(\"\"),h=\"data:image/svg+xml;base64,\"+btoa(f),i=document.createElement(\"a\"),i.href=h,i.download=\"wavedrom.svg\",i.click(),e.parentNode.removeChild(e),document.body.removeEventListener(\"mousedown\",c,!1)},!1),e.addEventListener(\"contextmenu\",function(a){a.preventDefault()},!1),document.body.addEventListener(\"mousedown\",c,!1),f.preventDefault()},!1)}b.exports=d},{}],2:[function(a,b,c){\"use strict\";var d=a(\"./jsonml-parse\");b.exports=d},{\"./jsonml-parse\":15}],3:[function(a,b,c){\"use strict\";function d(){f(0,e(\"InputJSON_0\"),\"WaveDrom_Display_\")}var e=a(\"./eva\"),f=a(\"./render-wave-form\");b.exports=d},{\"./eva\":4,\"./render-wave-form\":28}],4:[function(require,module,exports){\"use strict\";function eva(id){function erra(a){return{signal:[{name:[\"tspan\",[\"tspan\",{class:\"error h5\"},\"Error: \"],a.message]}]}}var TheTextBox,source;if(TheTextBox=document.getElementById(id),TheTextBox.type&&\"textarea\"===TheTextBox.type)try{source=eval(\"(\"+TheTextBox.value+\")\")}catch(a){return erra(a)}else try{source=eval(\"(\"+TheTextBox.innerHTML+\")\")}catch(a){return erra(a)}if(\"[object Object]\"!==Object.prototype.toString.call(source))return erra({message:'[Semantic]: The root has to be an Object: \"{signal:[...]}\"'});if(source.signal){if(\"[object Array]\"!==Object.prototype.toString.call(source.signal))return erra({message:'[Semantic]: \"signal\" object has to be an Array \"signal:[]\"'})}else{if(!source.assign)return erra({message:'[Semantic]: \"signal:[...]\" or \"assign:[...]\" property is missing inside the root Object'});if(\"[object Array]\"!==Object.prototype.toString.call(source.assign))return erra({message:'[Semantic]: \"assign\" object hasto be an Array \"assign:[]\"'})}return source}module.exports=eva},{}],5:[function(a,b,c){\"use strict\";function d(a){var b=0,c=0,d=[];return a.forEach(function(a){\"vvv-2\"===a||\"vvv-3\"===a||\"vvv-4\"===a||\"vvv-5\"===a?c+=1:0!==c&&(d.push(b-(c+1)/2),c=0),b+=1}),0!==c&&d.push(b-(c+1)/2),d}b.exports=d},{}],6:[function(a,b,c){\"use strict\";function d(a,b,c){var d,e,f=[];if(4===a.length){for(e=0;e<c;e+=1){for(f.push(a[0]),d=0;d<b;d+=1)f.push(a[1]);for(f.push(a[2]),d=0;d<b;d+=1)f.push(a[3])}return f}for(1===a.length&&a.push(a[0]),f.push(a[0]),d=0;d<c*(2*(b+1))-1;d+=1)f.push(a[1]);return f}b.exports=d},{}],7:[function(a,b,c){\"use strict\";function d(a,b,c){var d;switch(d=[],a){case\"p\":d=e([\"pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"n\":d=e([\"nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"P\":d=e([\"Pclk\",\"111\",\"nclk\",\"000\"],b,c);break;case\"N\":d=e([\"Nclk\",\"000\",\"pclk\",\"111\"],b,c);break;case\"l\":case\"L\":case\"0\":d=e([\"000\"],b,c);break;case\"h\":case\"H\":case\"1\":d=e([\"111\"],b,c);break;case\"=\":d=e([\"vvv-2\"],b,c);break;case\"2\":d=e([\"vvv-2\"],b,c);break;case\"3\":d=e([\"vvv-3\"],b,c);break;case\"4\":d=e([\"vvv-4\"],b,c);break;case\"5\":d=e([\"vvv-5\"],b,c);break;case\"d\":d=e([\"ddd\"],b,c);break;case\"u\":d=e([\"uuu\"],b,c);break;case\"z\":d=e([\"zzz\"],b,c);break;default:d=e([\"xxx\"],b,c)}return d}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],8:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h,i,j,k,l,m,n,o,p,q,r,s;return d={p:\"pclk\",n:\"nclk\",P:\"Pclk\",N:\"Nclk\",h:\"pclk\",l:\"nclk\",H:\"Pclk\",L:\"Nclk\"},f={0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},g={0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},h={p:\"0\",n:\"1\",P:\"0\",N:\"1\",h:\"1\",l:\"0\",H:\"1\",L:\"0\",0:\"0\",1:\"1\",x:\"x\",d:\"d\",u:\"u\",z:\"z\",\"=\":\"v\",2:\"v\",3:\"v\",4:\"v\",5:\"v\"},i={p:\"\",n:\"\",P:\"\",N:\"\",h:\"\",l:\"\",H:\"\",L:\"\",0:\"\",1:\"\",x:\"\",d:\"\",u:\"\",z:\"\",\"=\":\"-2\",2:\"-2\",3:\"-3\",4:\"-4\",5:\"-5\"},j={p:\"111\",n:\"000\",P:\"111\",N:\"000\",h:\"111\",l:\"000\",H:\"111\",L:\"000\",0:\"000\",1:\"111\",x:\"xxx\",d:\"ddd\",u:\"uuu\",z:\"zzz\",\"=\":\"vvv-2\",2:\"vvv-2\",3:\"vvv-3\",4:\"vvv-4\",5:\"vvv-5\"},k={p:\"nclk\",n:\"pclk\",P:\"nclk\",N:\"pclk\"},l={p:\"000\",n:\"111\",P:\"000\",N:\"111\"},m={hp:\"111\",Hp:\"111\",ln:\"000\",Ln:\"000\",nh:\"111\",Nh:\"111\",pl:\"000\",Pl:\"000\"},n=a.split(\"\"),o=j[n[1]],p=d[n[1]],void 0===p?(q=f[n[1]],void 0===q?e([\"xxx\"],b,c):(r=h[n[0]],void 0===r?e([\"xxx\"],b,c):e([r+\"m\"+q+i[n[0]]+g[n[1]],o],b,c))):(s=m[a],void 0!==s&&(p=s),q=k[n[1]],void 0===q?e([p,o],b,c):e([p,o,q,l[n[1]]],b,c))}var e=a(\"./gen-brick\");b.exports=d},{\"./gen-brick\":6}],9:[function(a,b,c){\"use strict\";var d=a(\"./process-all\"),e=a(\"./eva\"),f=a(\"./render-wave-form\"),g=a(\"./editor-refresh\");b.exports={processAll:d,eva:e,renderWaveForm:f,editorRefresh:g}},{\"./editor-refresh\":3,\"./eva\":4,\"./process-all\":21,\"./render-wave-form\":28}],10:[function(a,b,c){\"use strict\";function d(a,b){for(var c,d;b.childNodes.length;)b.removeChild(b.childNodes[0]);d=[\"svg\",{id:\"svgcontent_\"+a,xmlns:f.svg,\"xmlns:xlink\":f.xlink,overflow:\"hidden\"},[\"style\",\".pinname {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:end; font-family:Helvetica} .wirename {font-size:12px; font-style:normal; font-variant:normal; font-weight:500; font-stretch:normal; text-align:center; text-anchor:start; font-family:Helvetica} .wirename:hover {fill:blue} .gate {color:#000; fill:#ffc; fill-opacity: 1;stroke:#000; stroke-width:1; stroke-opacity:1} .gate:hover {fill:red !important; } .wire {fill:none; stroke:#000; stroke-width:1; stroke-opacity:1} .grid {fill:#fff; fill-opacity:1; stroke:none}\"]],c=e(d),b.insertBefore(c,null)}var e=a(\"./create-element\"),f=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30}],11:[function(a,b,c){\"use strict\";function d(a,b,c,d){for(var h,i,j;b.childNodes.length;)b.removeChild(b.childNodes[0]);for(i in g)break;j=g.default||g[i],c&&c.config&&c.config.skin&&g[c.config.skin]&&(j=g[c.config.skin]),0===a?(d.xs=Number(j[3][1][2][1].width),d.ys=Number(j[3][1][2][1].height),d.xlabel=Number(j[3][1][2][1].x),d.ym=Number(j[3][1][2][1].y)):j=[\"svg\",{id:\"svg\",xmlns:f.svg,\"xmlns:xlink\":f.xlink,height:\"0\"},[\"g\",{id:\"waves\"},[\"g\",{id:\"lanes\"}],[\"g\",{id:\"groups\"}]]],j[j.length-1][1].id=\"waves_\"+a,j[j.length-1][2][1].id=\"lanes_\"+a,j[j.length-1][3][1].id=\"groups_\"+a,j[1].id=\"svgcontent_\"+a,j[1].height=0,h=e(j),b.insertBefore(h,null)}var e=a(\"./create-element\"),f=a(\"./w3\"),g=a(\"./wave-skin\");b.exports=d},{\"./create-element\":2,\"./w3\":30,\"./wave-skin\":32}],12:[function(a,b,c){\"use strict\";function d(a,b,c){\"string\"==typeof c&&(c=new Function(\"event\",c)),\"function\"==typeof c&&(a[b]=c)}function e(a,b){if(b.name&&document.attachEvent)try{var c=document.createElement(\"<\"+a.tagName+\" name='\"+b.name+\"'>\");a.tagName===c.tagName&&(a=c)}catch(a){console.log(a)}for(var e in b)if(b.hasOwnProperty(e)){var i=b[e];e&&null!==i&&\"undefined\"!=typeof i&&(e=f[e.toLowerCase()]||e,\"style\"===e?\"undefined\"!=typeof a.style.cssText?a.style.cssText=i:a.style=i:h[e]?(d(a,e,i),g[e]&&d(a,g[e],i)):\"string\"==typeof i||\"number\"==typeof i||\"boolean\"==typeof i?(a.setAttribute(e,i),g[e]&&a.setAttribute(g[e],i)):(a[e]=i,g[e]&&(a[g[e]]=i)))}return a}var f={rowspan:\"rowSpan\",colspan:\"colSpan\",cellpadding:\"cellPadding\",cellspacing:\"cellSpacing\",tabindex:\"tabIndex\",accesskey:\"accessKey\",hidefocus:\"hideFocus\",usemap:\"useMap\",maxlength:\"maxLength\",readonly:\"readOnly\",contenteditable:\"contentEditable\"},g={enctype:\"encoding\",onscroll:\"DOMMouseScroll\"},h=function(a){for(var b,c={};a.length;)b=a.shift(),c[\"on\"+b.toLowerCase()]=b;return c}(\"blur,change,click,dblclick,error,focus,keydown,keypress,keyup,load,mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,resize,scroll,select,submit,unload\".split(\",\"));b.exports=e},{}],13:[function(a,b,c){\"use strict\";function d(a,b){b&&(a.tagName&&\"style\"===a.tagName.toLowerCase()&&document.createStyleSheet?a.cssText=b:a.canHaveChildren!==!1&&a.appendChild(b))}b.exports=d},{}],14:[function(a,b,c){\"use strict\";function d(a){var b=document.createElement(\"div\");if(b.innerHTML=a,e(b),1===b.childNodes.length)return b.firstChild;for(var c=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\");b.firstChild;)c.appendChild(b.firstChild);return c}var e=a(\"./jsonml-trim-whitespace\");b.exports=d},{\"./jsonml-trim-whitespace\":16}],15:[function(a,b,c){\"use strict\";function d(a){return a instanceof Array&&\"string\"==typeof a[0]}function e(a,b,c){return document.createTextNode(\"[\"+a+\"-\"+c+\"]\")}var f,g,h=a(\"./jsonml-hydrate\"),i=a(\"./w3\"),j=a(\"./jsonml-append-child\"),k=a(\"./jsonml-add-attributes\"),l=a(\"./jsonml-trim-whitespace\"),m=null;f=function(a,b,c){for(var d=1;d<b.length;d++)b[d]instanceof Array||\"string\"==typeof b[d]?j(a,g(b[d],c)):b[d]&&b[d].value?j(a,h(b[d].value)):\"object\"==typeof b[d]&&null!==b[d]&&1===a.nodeType&&(a=k(a,b[d]));return a},g=function(a,b){var c;try{if(!a)return null;if(\"string\"==typeof a)return document.createTextNode(a);if(a&&a.value)return h(a.value);if(!d(a))throw new SyntaxError(\"invalid JsonML\");var k=a[0];if(!k){for(var n=document.createDocumentFragment?document.createDocumentFragment():document.createElement(\"\"),o=2;o<a.length;o++)j(n,g(a[o],b));return l(n),1===n.childNodes.length?n.firstChild:n}return\"style\"===k.toLowerCase()&&document.createStyleSheet?(f(document.createStyleSheet(),a,b),null):(c=f(document.createElementNS(i.svg,k),a,b),l(c),c)}catch(c){try{var p=\"function\"==typeof m?m:e;return p(c,a,b)}catch(a){return document.createTextNode(\"[\"+a+\"]\")}}},b.exports=g},{\"./jsonml-add-attributes\":12,\"./jsonml-append-child\":13,\"./jsonml-hydrate\":14,\"./jsonml-trim-whitespace\":16,\"./w3\":30}],16:[function(a,b,c){\"use strict\";function d(a){return a&&3===a.nodeType&&(!a.nodeValue||!/\\S/.exec(a.nodeValue))}function e(a){if(a){for(;d(a.firstChild);)a.removeChild(a.firstChild);for(;d(a.lastChild);)a.removeChild(a.lastChild)}}b.exports=e},{}],17:[function(a,b,c){\"use strict\";var d={xs:20,ys:20,xg:120,yh0:0,yh1:0,yf0:0,yf1:0,y0:5,yo:30,tgo:-10,ym:15,xlabel:6,xmax:1,scale:1,head:{},foot:{}};b.exports=d},{}],18:[function(a,b,c){\"use strict\";function d(a,b){function c(a){return a>0?Math.round(a):1}var d;b.hscale=1,b.hscale0&&(b.hscale=b.hscale0),a&&a.config&&a.config.hscale&&(d=Math.round(c(a.config.hscale)),d>0&&(d>100&&(d=100),b.hscale=d)),b.yh0=0,b.yh1=0,b.head=a.head,b.xmin_cfg=0,b.xmax_cfg=1e12,a&&a.config&&a.config.hbounds&&2==a.config.hbounds.length&&(a.config.hbounds[0]=Math.floor(a.config.hbounds[0]),a.config.hbounds[1]=Math.ceil(a.config.hbounds[1]),a.config.hbounds[0]<a.config.hbounds[1]&&(b.xmin_cfg=2*Math.floor(a.config.hbounds[0]),b.xmax_cfg=2*Math.floor(a.config.hbounds[1]))),a&&a.head&&((a.head.tick||0===a.head.tick||a.head.tock||0===a.head.tock)&&(b.yh0=20),(a.head.tick||0===a.head.tick)&&(a.head.tick=a.head.tick+b.xmin_cfg/2),(a.head.tock||0===a.head.tock)&&(a.head.tock=a.head.tock+b.xmin_cfg/2),a.head.text&&(b.yh1=46,b.head.text=a.head.text)),b.yf0=0,b.yf1=0,b.foot=a.foot,a&&a.foot&&((a.foot.tick||0===a.foot.tick||a.foot.tock||0===a.foot.tock)&&(b.yf0=20),(a.foot.tick||0===a.foot.tick)&&(a.foot.tick=a.foot.tick+b.xmin_cfg/2),(a.foot.tock||0===a.foot.tock)&&(a.foot.tock=a.foot.tock+b.xmin_cfg/2),a.foot.text&&(b.yf1=46,b.foot.text=a.foot.text))}b.exports=d},{}],19:[function(a,b,c){\"use strict\";function d(a,b,c){var d,h,i,j,k,l,m=[],n=[],o=[];for(m=a.split(\"\"),i=m.shift(),k=!1,d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;for(n=n.concat(e(i,b,d));m.length;){for(h=i,i=m.shift(),\"<\"===i&&(k=!0,i=m.shift()),\">\"===i&&(k=!1,i=m.shift()),d=1;\".\"===m[0]||\"|\"===m[0];)m.shift(),d+=1;n=k?n.concat(f(h+i,0,d-c.period)):n.concat(f(h+i,b,d))}for(j=0;j<c.phase;j+=1)o.push(n.shift());return o.length>0?(l=g(o).length,1==g([o[o.length-1]]).length&&1==g([n[0]]).length&&(l-=1)):l=0,[n,l]}var e=a(\"./gen-first-wave-brick\"),f=a(\"./gen-wave-brick\"),g=a(\"./find-lane-markers\");b.exports=d},{\"./find-lane-markers\":5,\"./gen-first-wave-brick\":7,\"./gen-wave-brick\":8}],20:[function(a,b,c){\"use strict\";function d(a,b){var c;return c=a.data,void 0===c?null:(\"string\"==typeof c&&(c=c.split(\" \")),c=c.slice(b))}function e(a,b){var c,e,g,h,i,j=[],k=[];for(c in a)e=a[c],b.period=e.period?e.period:1,b.phase=(e.phase?2*e.phase:0)+b.xmin_cfg,j.push([]),k[0]=e.name||\" \",k[1]=(e.phase||0)+b.xmin_cfg/2,e.wave?(h=f(e.wave,b.period*b.hscale-1,b),g=h[0],i=h[1]):g=null,j[j.length-1][0]=k.slice(0),j[j.length-1][1]=g,j[j.length-1][2]=d(e,i);return j}var f=a(\"./parse-wave-lane\");b.exports=e},{\"./parse-wave-lane\":19}],21:[function(a,b,c){\"use strict\";function d(){var a,b,c,d;for(c=0,a=document.querySelectorAll(\"*\"),b=0;b<a.length;b++)a.item(b).type&&\"WaveDrom\"===a.item(b).type&&(a.item(b).setAttribute(\"id\",\"InputJSON_\"+c),d=document.createElement(\"div\"),d.id=\"WaveDrom_Display_\"+c,a.item(b).parentNode.insertBefore(d,a.item(b)),c+=1);for(b=0;b<c;b+=1)g(b,e(\"InputJSON_\"+b),\"WaveDrom_Display_\"),f(b,\"WaveDrom_Display_\");document.head.innerHTML+='<style type=\"text/css\">div.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}</style>'}var e=a(\"./eva\"),f=a(\"./append-save-as-dialog\"),g=a(\"./render-wave-form\");b.exports=d},{\"./append-save-as-dialog\":1,\"./eva\":4,\"./render-wave-form\":28}],22:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f={},g={x:10};for(\"string\"!=typeof a[0]&&\"number\"!=typeof a[0]||(e=a[0],g.x=25),b.x+=g.x,c=0;c<a.length;c++)\"object\"==typeof a[c]&&(\"[object Array]\"===Object.prototype.toString.call(a[c])?(f.y=b.y,b=d(a[c],b),b.groups.push({x:b.xx,y:f.y,height:b.y-f.y,name:b.name})):(b.lanes.push(a[c]),b.width.push(b.x),b.y+=1));return b.xx=b.x,b.x-=g.x,b.name=e,b}b.exports=d},{}],23:[function(a,b,c){\"use strict\";function d(a,b,c,d,h){function i(){r&&s&&(x=document.createElementNS(g.svg,\"path\"),x.id=\"gmark_\"+A.from+\"_\"+A.to,x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" \"+s.x+\",\"+s.y),x.setAttribute(\"style\",\"fill:none;stroke:#00F;stroke-width:1\"),j.insertBefore(x,null))}var j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z=[],A={words:[],from:0,shape:\"\",to:0,label:\"\"},B={};if(b){for(k in b)if(h.period=b[k].period?b[k].period:1,h.phase=(b[k].phase?2*b[k].phase:0)+h.xmin_cfg,m=b[k].node)for(z=m.split(\"\"),n=0;z.length;)o=z.shift(),\".\"!==o&&(B[o]={x:h.xs*(2*n*h.period*h.hscale-h.phase)+h.xlabel,y:k*h.yo+h.y0+.5*h.ys}),n+=1;if(j=document.createElementNS(g.svg,\"g\"),j.id=\"wavearcs_\"+c,a.insertBefore(j,null),d.edge)for(k in d.edge)if(A.words=d.edge[k].split(\" \"),A.label=d.edge[k].substring(A.words[0].length),A.label=A.label.substring(1),A.from=A.words[0].substr(0,1),A.to=A.words[0].substr(-1,1),A.shape=A.words[0].slice(1,-1),r=B[A.from],s=B[A.to],i(),r&&s){switch(A.label&&(p=e.parse(A.label),p.unshift(\"text\",{style:\"font-size:10px;\",\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),p=f(p),q=f([\"rect\",{height:9,style:\"fill:#FFF;\"}]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width,q.setAttribute(\"width\",y)),t=s.x-r.x,u=s.y-r.y,v=(r.x+s.x)/2,w=(r.y+s.y)/2,A.shape){case\"-\":break;case\"~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~-\":x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|-\":x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"~->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c 0, 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.25*(s.x-r.x));break;case\"-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" 0,\"+u+\" \"+t+\",0\"),A.label&&(v=r.x);break;case\"-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;case\"<->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\");break;case\"<~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+.3*t+\", \"+u+\" \"+t+\", \"+u);break;case\"<-~>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"M \"+r.x+\",\"+r.y+\" c \"+.7*t+\", 0 \"+t+\", \"+u+\" \"+t+\", \"+u),A.label&&(v=r.x+.75*(s.x-r.x));break;case\"<-|>\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t+\",0 0,\"+u),A.label&&(v=s.x);break;case\"<-|->\":x.setAttribute(\"style\",\"marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none\"),x.setAttribute(\"d\",\"m \"+r.x+\",\"+r.y+\" \"+t/2+\",0 0,\"+u+\" \"+t/2+\",0\");break;default:x.setAttribute(\"style\",\"fill:none;stroke:#F00;stroke-width:1\")}A.label&&(p.setAttribute(\"x\",v),p.setAttribute(\"y\",w+3),q.setAttribute(\"x\",v-y/2),q.setAttribute(\"y\",w-5))}for(l in B)l===l.toLowerCase()&&B[l].x>0&&(q=f([\"rect\",{y:B[l].y-4,height:8,style:\"fill:#FFF;\"}]),p=f([\"text\",{style:\"font-size:8px;\",x:B[l].x,y:B[l].y+2,\"text-anchor\":\"middle\"},l+\"\"]),j.insertBefore(q,null),j.insertBefore(p,null),y=p.getBBox().width+2,q.setAttribute(\"x\",B[l].x-y/2),q.setAttribute(\"width\",y))}}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\");b.exports=d},{\"./create-element\":2,\"./w3\":30,tspan:33}],24:[function(a,b,c){\"use strict\";function d(a,b){var c,e,f;for(b.xmax=Math.max(b.xmax,b.x),c=b.y,f=a.length,e=1;e<f;e++)\"[object Array]\"===Object.prototype.toString.call(a[e])?b=d(a[e],{x:b.x+1,y:b.y,xmax:b.xmax}):(a[e]={name:a[e],x:b.x+1,y:b.y},b.y+=2);return a[0]={name:a[0],x:b.x,y:Math.round((c+(b.y-2))/2)},b.x--,b}function e(a,b,c){var d,e,f=\" M 4,0 C 4,1.1 3.1,2 2,2 0.9,2 0,1.1 0,0 c 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 z\",g={\"~\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\"+f,\"=\":\"M -11,-6 -11,6 0,0 z m -5,6 5,0\",\"&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\",\"~&\":\"m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z\"+f,\"|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\",\"~|\":\"m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z\"+f,\"^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\",\"~^\":\"m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z\"+f,\"+\":\"m -8,5 0,-10 m -5,5 10,0 m 3,0 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\",\"*\":\"m -4,4 -8,-8 m 0,8 8,-8 m 4,4 c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z\"},h={BUF:1,INV:1,AND:\"&\",NAND:\"&\",OR:\"â‰¥1\",NOR:\"â‰¥1\",XOR:\"=1\",XNOR:\"=1\",box:\"\"},i={INV:1,NAND:1,NOR:1,XNOR:1};return c===b&&(c=4,b=-4),d=g[a],e=h[a],d?[\"path\",{class:\"gate\",d:d}]:e?[\"g\",[\"path\",{class:\"gate\",d:\"m -16,\"+(b-3)+\" 16,0 0,\"+(c-b+6)+\" -16,0 z\"+(i[a]?f:\"\")}],[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},e+\"\"]]]:[\"text\",[\"tspan\",{x:\"-14\",y:\"4\",class:\"wirename\"},a+\"\"]]}function f(a){var b,c,d,f=[\"g\"],g=[],h=a.length;for(b=2;b<h;b++)g.push(a[b][1]);for(c=Math.min.apply(null,g),d=Math.max.apply(null,g),f.push([\"g\",{transform:\"translate(16,0)\"},[\"path\",{d:\"M  \"+a[2][0]+\",\"+c+\" \"+a[2][0]+\",\"+d,class:\"wire\"}]]),b=2;b<h;b++)f.push([\"g\",[\"path\",{d:\"m  \"+a[b][0]+\",\"+a[b][1]+\" 16,0\",class:\"wire\"}]]);return f.push([\"g\",{transform:\"translate(\"+a[1][0]+\",\"+a[1][1]+\")\"},[\"title\",a[0]],e(a[0],c-a[1][1],d-a[1][1])]),f}function g(a,b){var c,d,e,h,i,j=[\"g\"],k=[];if(\"[object Array]\"===Object.prototype.toString.call(a)){for(d=a.length,k.push(a[0].name),k.push([32*(b-a[0].x),8*a[0].y]),c=1;c<d;c++)\"[object Array]\"===Object.prototype.toString.call(a[c])?k.push([32*(b-a[c][0].x),8*a[c][0].y]):k.push([32*(b-a[c].x),8*a[c].y]);for(j.push(f(k)),c=1;c<d;c++)j.push(g(a[c],b))}else i=a.name,e=32*(b-a.x),h=8*a.y,j.push([\"g\",{transform:\"translate(\"+e+\",\"+h+\")\"},[\"title\",i],[\"path\",{d:\"M 2,0 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z\"}],[\"text\",[\"tspan\",{x:\"-4\",y:\"4\",class:\"pinname\"},i]]]);return j}function h(a,b){var c,e,f,h,j,k,l,m,n,o,p=[\"g\"],q=[\"g\"];for(m=b.assign.length,e={x:0,y:2,xmax:0},c=b.assign,l=0;l<m;l++)e=d(c[l],e),e.x++;for(f=e.xmax+3,l=0;l<m;l++)p.push(g(c[l],f));for(j=32*(f+1)+1,k=8*(e.y+1)-7,m=4*(f+1),o=e.y+1,l=0;l<=m;l++)for(n=0;n<=o;n++)q.push([\"rect\",{height:1,width:1,x:8*l-.5,y:8*n-.5,class:\"grid\"}]);h=document.getElementById(\"svgcontent_\"+a),h.setAttribute(\"viewBox\",\"0 0 \"+j+\" \"+k),h.setAttribute(\"width\",j),h.setAttribute(\"height\",k),h.insertBefore(i([\"g\",{transform:\"translate(0.5, 0.5)\"},q,p]),null)}var i=a(\"./create-element\");b.exports=h},{\"./create-element\":2}],25:[function(a,b,c){\"use strict\";function d(a,b,c,d){var f,g,h,i,j,k,l,m,n=[];if(b){g=document.createElementNS(e.svg,\"g\"),g.id=\"wavegaps_\"+c,a.insertBefore(g,null),l=!1;for(f in b)if(d.period=b[f].period?b[f].period:1,d.phase=(b[f].phase?2*b[f].phase:0)+d.xmin_cfg,h=document.createElementNS(e.svg,\"g\"),h.id=\"wavegap_\"+f+\"_\"+c,h.setAttribute(\"transform\",\"translate(0,\"+(d.y0+f*d.yo)+\")\"),g.insertBefore(h,null),k=b[f].wave)for(n=k.split(\"\"),j=0;n.length;)m=n.shift(),\"<\"===m&&(l=!0,m=n.shift()),\">\"===m&&(l=!1,m=n.shift()),j+=l?1:2*d.period,\"|\"===m&&(i=document.createElementNS(e.svg,\"use\"),i.setAttributeNS(e.xlink,\"xlink:href\",\"#gap\"),i.setAttribute(\"transform\",\"translate(\"+d.xs*((j-(l?0:d.period))*d.hscale-d.phase)+\")\"),h.insertBefore(i,null))}}var e=a(\"./w3\");b.exports=d},{\"./w3\":30}],26:[function(a,b,c){\"use strict\";function d(a,b,c){var d,f,g,h=[\"g\"];return a.forEach(function(a,i){h.push([\"path\",{id:\"group_\"+i+\"_\"+b,d:\"m \"+(a.x+.5)+\",\"+(a.y*c.yo+3.5+c.yh0+c.yh1)+\" c -3,0 -5,2 -5,5 l 0,\"+(a.height*c.yo-16)+\" c 0,3 2,5 5,5\",style:\"stroke:#0041c4;stroke-width:1;fill:none\"}]),void 0!==a.name&&(d=a.x-10,f=c.yo*(a.y+a.height/2)+c.yh0+c.yh1,g=e.parse(a.name),g.unshift(\"text\",{\"text-anchor\":\"middle\",class:\"info\",\"xml:space\":\"preserve\"}),h.push([\"g\",{transform:\"translate(\"+d+\",\"+f+\")\"},[\"g\",{transform:\"rotate(270)\"},g]]))}),h}var e=a(\"tspan\");b.exports=d},{tspan:33}],27:[function(a,b,c){\"use strict\";function d(a,b,c,d){function g(a,b,c){var d;a[b]&&a[b].text&&(d=e.parse(a[b].text),d.unshift(\"text\",{x:a.xmax*a.xs/2,y:c,\"text-anchor\":\"middle\",fill:\"#000\",\"xml:space\":\"preserve\"}),d=f(d),j.insertBefore(d,null))}function h(a,b,c,d,g,h,k){var l,m,n,o,p=1,q=0,r=[];if(void 0!==a[b]&&void 0!==a[b][c]){if(n=a[b][c],\"string\"==typeof n)n=n.split(\" \");else if(\"number\"==typeof n||\"boolean\"==typeof n)for(m=Number(n),n=[],i=0;i<k;i+=1)n.push(i+m);if(\"[object Array]\"===Object.prototype.toString.call(n)&&0!==n.length){if(1===n.length)if(m=Number(n[0]),isNaN(m))r=n;else for(i=0;i<k;i+=1)r[i]=i+m;else if(2===n.length)if(m=Number(n[0]),p=Number(n[1]),o=n[1].split(\".\"),2===o.length&&(q=o[1].length),isNaN(m)||isNaN(p))r=n;else for(m=p*m,i=0;i<k;i+=1)r[i]=(p*i+m).toFixed(q);else r=n;for(i=0;i<k;i+=1)o=r[i],l=e.parse(o),l.unshift(\"text\",{x:i*g+d,y:h,\"text-anchor\":\"middle\",class:\"muted\",\"xml:space\":\"preserve\"}),l=f(l),j.insertBefore(l,null)}}}var i,j,k,l,m,n;for(l=2*d.hscale,m=l*d.xs,k=d.xmax/l,n=b.length*d.yo,j=f([\"g\",{id:\"gmarks_\"+c}]),a.insertBefore(j,a.firstChild),i=0;i<k+1;i+=1)j.insertBefore(f([\"path\",{id:\"gmark_\"+i+\"_\"+c,d:\"m \"+i*m+\",0 0,\"+n,style:\"stroke:#888;stroke-width:0.5;stroke-dasharray:1,3\"}]),null);g(d,\"head\",d.yh0?-33:-13),g(d,\"foot\",n+(d.yf0?45:25)),h(d,\"head\",\"tick\",0,m,-5,k+1),h(d,\"head\",\"tock\",m/2,m,-5,k),h(d,\"foot\",\"tick\",0,m,n+15,k+1),h(d,\"foot\",\"tock\",m/2,m,n+15,k)}var e=a(\"tspan\"),f=a(\"./create-element\");b.exports=d},{\"./create-element\":2,tspan:33}],28:[function(a,b,c){\"use strict\";function d(a,b,c){var d,r,s,t,u,v,w,x,y,z=0;if(b.signal){p(a,document.getElementById(c+a),b,f),h(b,f),d=e(b.signal,{x:0,y:0,xmax:0,width:[],lanes:[],groups:[]}),r=document.getElementById(\"lanes_\"+a),s=document.getElementById(\"groups_\"+a),u=i(d.lanes,f),x=m(r,u,a,f);for(y in x)z=Math.max(z,x[y]+d.width[y]);j(r,u,a,f),o(r,d.lanes,a,b,f),k(r,d.lanes,a,f),s.insertBefore(g(l(d.groups,a,f)),null),f.xg=Math.ceil((z-f.tgo)/f.xs)*f.xs,v=f.xg+f.xs*(f.xmax+1),w=u.length*f.yo+f.yh0+f.yh1+f.yf0+f.yf1,t=document.getElementById(\"svgcontent_\"+a),t.setAttribute(\"viewBox\",\"0 0 \"+v+\" \"+w),t.setAttribute(\"width\",v),t.setAttribute(\"height\",w),t.setAttribute(\"overflow\",\"hidden\"),r.setAttribute(\"transform\",\"translate(\"+(f.xg+.5)+\", \"+(f.yh0+f.yh1+.5)+\")\")}else b.assign&&(q(a,document.getElementById(c+a),b),n(a,b))}var e=a(\"./rec\"),f=a(\"./lane\"),g=a(\"./create-element\"),h=a(\"./parse-config\"),i=a(\"./parse-wave-lanes\"),j=a(\"./render-marks\"),k=a(\"./render-gaps\"),l=a(\"./render-groups\"),m=a(\"./render-wave-lane\"),n=a(\"./render-assign\"),o=a(\"./render-arcs\"),p=a(\"./insert-svg-template\"),q=a(\"./insert-svg-template-assign\");b.exports=d},{\"./create-element\":2,\"./insert-svg-template\":11,\"./insert-svg-template-assign\":10,\"./lane\":17,\"./parse-config\":18,\"./parse-wave-lanes\":20,\"./rec\":22,\"./render-arcs\":23,\"./render-assign\":24,\"./render-gaps\":25,\"./render-groups\":26,\"./render-marks\":27,\"./render-wave-lane\":29}],29:[function(a,b,c){\"use strict\";function d(a,b,c,d){var i,j,k,l,m,n,o,p,q,r=[1],s=0,t=0,u=[];for(j=0;j<b.length;j+=1)if(p=b[j][0][0],p&&(l=f([\"g\",{id:\"wavelane_\"+j+\"_\"+c,transform:\"translate(0,\"+(d.y0+j*d.yo)+\")\"}]),a.insertBefore(l,null),n=e.parse(p),n.unshift(\"text\",{x:d.tgo,y:d.ym,class:\"info\",\"text-anchor\":\"end\",\"xml:space\":\"preserve\"}),n=f(n),l.insertBefore(n,null),u.push(n.getBBox().width),q=b[j][0][1],q=q>0?Math.ceil(2*q)-2*q:-2*q,m=f([\"g\",{id:\"wavelane_draw_\"+j+\"_\"+c,transform:\"translate(\"+q*d.xs+\", 0)\"}]),l.insertBefore(m,null),b[j][1])){for(i=0;i<b[j][1].length;i+=1)o=document.createElementNS(g.svg,\"use\"),o.setAttributeNS(g.xlink,\"xlink:href\",\"#\"+b[j][1][i]),o.setAttribute(\"transform\",\"translate(\"+i*d.xs+\")\"),m.insertBefore(o,null);if(b[j][2]&&b[j][2].length&&(r=h(b[j][1]),0!==r.length))for(k in r)b[j][2]&&\"undefined\"!=typeof b[j][2][k]&&(n=e.parse(b[j][2][k]),n.unshift(\"text\",{x:r[k]*d.xs+d.xlabel,y:d.ym,\"text-anchor\":\"middle\",\"xml:space\":\"preserve\"}),n=f(n),m.insertBefore(n,null));b[j][1].length>s&&(s=b[j][1].length)}return d.xmax=Math.min(s,d.xmax_cfg-d.xmin_cfg),d.xg=t+20,u}var e=a(\"tspan\"),f=a(\"./create-element\"),g=a(\"./w3\"),h=a(\"./find-lane-markers\");b.exports=d},{\"./create-element\":2,\"./find-lane-markers\":5,\"./w3\":30,tspan:33}],30:[function(a,b,c){\"use strict\";b.exports={svg:\"http://www.w3.org/2000/svg\",xlink:\"http://www.w3.org/1999/xlink\",xmlns:\"http://www.w3.org/XML/1998/namespace\"}},{}],31:[function(a,b,c){\"use strict\";window.WaveDrom=window.WaveDrom||{};var d=a(\"./\");window.WaveDrom.ProcessAll=d.processAll,window.WaveDrom.RenderWaveForm=d.renderWaveForm,window.WaveDrom.EditorRefresh=d.editorRefresh,window.WaveDrom.eva=d.eva},{\"./\":9}],32:[function(a,b,c){\"use strict\";b.exports=window.WaveSkin},{}],33:[function(a,b,c){\"use strict\";function d(a,b){b.add&&b.add.split(\";\").forEach(function(b){var c=b.split(\" \");a[c[0]][c[1]]=!0}),b.del&&b.del.split(\";\").forEach(function(b){var c=b.split(\" \");delete a[c[0]][c[1]]})}function e(a){return Object.keys(a).reduce(function(b,c){var d=Object.keys(a[c]);return d.length>0&&(b[c]=d.join(\" \")),b},{})}function f(a){var b,c,f,i,j;if(void 0===a)return[];if(\"number\"==typeof a)return[a+\"\"];if(\"string\"!=typeof a)return[a];for(c=[],b={\"text-decoration\":{},\"font-weight\":{},\"font-style\":{},\"baseline-shift\":{},\"font-size\":{},\"font-family\":{}};;){if(f=a.search(g),f===-1)return c.push([\"tspan\",e(b),a]),c;if(f>0&&(j=a.slice(0,f),c.push([\"tspan\",e(b),j])),i=a.match(g)[0],d(b,h[i]),a=a.slice(f+i.length),0===a.length)return c}}var g=/<o>|<ins>|<s>|<sub>|<sup>|<b>|<i>|<tt>|<\\/o>|<\\/ins>|<\\/s>|<\\/sub>|<\\/sup>|<\\/b>|<\\/i>|<\\/tt>/,h={\"<o>\":{add:\"text-decoration overline\"},\"</o>\":{del:\"text-decoration overline\"},\"<ins>\":{add:\"text-decoration underline\"},\"</ins>\":{del:\"text-decoration underline\"},\"<s>\":{add:\"text-decoration line-through\"},\"</s>\":{del:\"text-decoration line-through\"},\"<b>\":{add:\"font-weight bold\"},\"</b>\":{del:\"font-weight bold\"},\"<i>\":{add:\"font-style italic\"},\"</i>\":{del:\"font-style italic\"},\"<sub>\":{add:\"baseline-shift sub;font-size .7em\"},\"</sub>\":{del:\"baseline-shift sub;font-size .7em\"},\"<sup>\":{add:\"baseline-shift super;font-size .7em\"},\"</sup>\":{del:\"baseline-shift super;font-size .7em\"},\"<tt>\":{add:\"font-family monospace\"},\"</tt>\":{del:\"font-family monospace\"}};c.parse=f},{}]},{},[31]);</script><div><script type=\"WaveDrom\">{\"signal\": [{\"name\": \"clk\", \"wave\": \"P....................x\"}, {\"name\": \"/HWSystem[HWSystem][x]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\", \"9\", \"1\", \"3\", \"5\", \"7\"]}, {\"name\": \"/HWSystem[HWSystem][y]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\", \"B\", \"7\"]}, {\"name\": \"/HWSystem[HWSystem][ci]\", \"wave\": \"x0.....10....10....10x\", \"data\": []}, {\"name\": \"/HWSystem[HWSystem][s]\", \"wave\": \"x22222222222222222222x\", \"data\": [\"0\", \"8\", \"E\", \"C\", \"2\", \"0\", \"D\", \"A\", \"0\", \"E\", \"4\", \"8\", \"F\", \"C\", \"2\", \"0\", \"C\", \"A\", \"1\", \"E\"]}, {\"name\": \"/HWSystem[HWSystem][co]\", \"wave\": \"x0...1.0.1010..1.0.10x\", \"data\": []}], \"head\": {\"text\": \"wvf\", \"tock\": 0}}</script></div><script>WaveDrom.ProcessAll();</script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sys = py4hw.HWSystem()\n",
    "\n",
    "x = sys.wire('x', 4)\n",
    "y = sys.wire('y', 4)\n",
    "ci = sys.wire('ci')\n",
    "s = sys.wire('s', 4)\n",
    "co = sys.wire('co')\n",
    "fan = py4hw.Add(sys, 'fa', x, y, s, ci, co)\n",
    "\n",
    "py4hw.Sequence(sys, 'x', [1,3,5,7,9], x)\n",
    "py4hw.Sequence(sys, 'y', [7,11], y)\n",
    "py4hw.Sequence(sys, 'ci', [0, 0, 0, 0, 0, 1], ci)\n",
    "\n",
    "wvf = py4hw.Waveform(sys, 'wvf', [x,y,ci,s,co])\n",
    "\n",
    "sys.getSimulator().clk(20)\n",
    "wvf.draw_wavedrom()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "abd11d62",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
